<template>
  <div class="page_root" :key="queryUpdateFlag" data-page-name="我的月度工作汇总" data-page-identification="f_m8nh2jr4xb">
    <a-spin :spinning="pageLoading.loading" :tip="pageLoading.tip">
      <!-- begin vid_pg2n4111dr 填写工作总结 -->
      <a-modal
        class="vid_pg2n4111dr"
        v-model:visible="vid_pg2n4111dr_props.visible"
        :footer="null"
        :centered="true"
        :title="'填写工作总结'"
        :maskClosable="false"
        :width="880"
        @cancel="handle_vid_pg2n4111dr_cancel"
      >
        <!-- begin vid_ye231q48cj 文本域_请输入工作总结 -->
        <a-textarea class="vid_ye231q48cj" v-model:value="vid_ye231q48cj_props.value" :autoSize="true" :showCount="true" :maxlength="1000" :placeholder="'请输入工作总结'"> </a-textarea>
        <!-- end vid_ye231q48cj 文本域_请输入工作总结 -->
        <!-- begin vid_xr0rzps964 容器_dbu1a6yhpk -->
        <al-box class="vid_xr0rzps964">
          <!-- begin vid_c15w1vqpu7 取消 -->
          <a-button class="vid_c15w1vqpu7" @click="handle_vid_c15w1vqpu7_click"> 取消 </a-button>
          <!-- end vid_c15w1vqpu7 取消 -->
          <!-- begin vid_13rtsmyllx 提交 -->
          <a-button class="vid_13rtsmyllx" :type="'primary'" @click="handle_vid_13rtsmyllx_click"> 提交 </a-button>
          <!-- end vid_13rtsmyllx 提交 -->
        </al-box>
        <!-- end vid_xr0rzps964 容器_dbu1a6yhpk -->
      </a-modal>
      <!-- end vid_pg2n4111dr 填写工作总结 -->
      <!-- begin vid_f6xuw7ttyl 备注 -->
      <a-modal class="vid_f6xuw7ttyl" v-model:visible="vid_f6xuw7ttyl_props.visible" :footer="null" :centered="true" :title="'备注'" :maskClosable="false" :width="800">
        <!-- begin vid_ksftppjyqy 表格_备注 -->
        <!-- 表格_备注 -->
        <a-table
          class="vid_ksftppjyqy"
          :editRowSaveLoading="vid_ksftppjyqy_props.editRowSaveLoading"
          :sorter="vid_ksftppjyqy_props.sorter"
          :currentRow="vid_ksftppjyqy_props.currentRow"
          :selectedRowList="vid_ksftppjyqy_props.selectedRowList"
          :data-source="vid_ksftppjyqy_options()"
          @change="handle_vid_ksftppjyqy_change"
          :columns="vid_ksftppjyqy_columns"
          :pagination="vid_ksftppjyqy_pagination"
          row-key="id"
          @resizeColumn="(w, col) => handleResizeColumn(w, col, 'vid_ksftppjyqy')"
          :scroll="{ x: 'max-content', scrollToFirstRowOnChange: true, }"
          :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped-even' : 'table-striped-odd')"
        >
          <template #headerCell="{ title, column }">
            <TableHeaderCell :title="title" :column="column" />
          </template>
          <template #bodyCell="{ text, column, record, index }">
            <!-- 序号列 -->
            <template v-if="column && column.dataIndex === 'vid_ksftppjyqy_serialNumber'">
              {{ index + 1 }}
            </template>
            <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"备注内容"} 列内容 -->
            <template v-if="column.dataIndex === 'description' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_ksftppjyqy_props.boundaryValueMap"
                :dataSource="vid_ksftppjyqy_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"提交人"} 列内容 -->
            <template v-if="column.dataIndex === 'submitter' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_ksftppjyqy_props.boundaryValueMap"
                :dataSource="vid_ksftppjyqy_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
            <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"提交时间"} 列内容 -->
            <template v-if="column.dataIndex === 'submissionTime' && !column.customRender">
              <text-table-cell
                :rowData="record"
                :conditionValueMap="vid_ksftppjyqy_props.boundaryValueMap"
                :dataSource="vid_ksftppjyqy_props.contentDataSource[column.dataIndex]"
                :columnsConfig="column"
                :value="text"
              />
            </template>
          </template>
        </a-table>
        <!-- end vid_ksftppjyqy 表格_备注 -->
      </a-modal>
      <!-- end vid_f6xuw7ttyl 备注 -->
      <!-- begin vid_wx1bzo1ky6 全局提示_提交失败 -->
      <!-- end vid_wx1bzo1ky6 全局提示_提交失败 -->
      <!-- begin vid_72tiek3uyj 全局提示_提交成功 -->
      <!-- end vid_72tiek3uyj 全局提示_提交成功 -->
      <!-- begin vid_n1j6n0uivd 生成月度绩效 -->
      <a-modal
        class="vid_n1j6n0uivd"
        v-model:visible="vid_n1j6n0uivd_props.visible"
        :footer="null"
        :centered="true"
        :title="'生成月度绩效'"
        :maskClosable="false"
        :width="1400"
        @cancel="handle_vid_n1j6n0uivd_cancel"
        @ok="handle_vid_n1j6n0uivd_ok"
      >
        <!-- begin vid_8ua7p6zegw 容器_db9hy4prrv -->
        <al-box class="vid_8ua7p6zegw">
          <!-- begin vid_1bj87coo4d 表单容器_2lqv8mn3gv -->
          <a-form ref="vid_1bj87coo4d_ref" class="vid_1bj87coo4d" :model="r_1ztoyz6oqs" :formModel="vid_1bj87coo4d_props.formModel">
            <!-- begin vid_nj8j5fa33d 布局容器_94yfdlecqw -->
            <a-row class="vid_nj8j5fa33d" :slots="'6:6:6:6'">
              <a-col :span="6">
                <!-- begin vid_rsq48ty6fb 表单项容器_goq31qc757 -->
                <a-form-item name="q_ukryd7c8vj" :rules="r_1ztoyz6oqs_rules[`q_ukryd7c8vj`]" class="vid_rsq48ty6fb" :label-col='{"span":4}' :wrapper-col='{"span":20}'>
                  <!-- begin vid_exwq7q5xpr 输入框_5nfzgulcjv -->
                  <a-input autocomplete="off" class="vid_exwq7q5xpr" v-model:value="r_1ztoyz6oqs.q_ukryd7c8vj" :disabled="true"> </a-input>
                  <!-- end vid_exwq7q5xpr 输入框_5nfzgulcjv -->
                  <template #label>
                    <!-- begin vid_3ug11uex9j 人员 -->
                    <span class="vid_3ug11uex9j"> 人员 </span>
                    <!-- end vid_3ug11uex9j 人员 -->
                  </template>
                </a-form-item>
                <!-- end vid_rsq48ty6fb 表单项容器_goq31qc757 -->
              </a-col>
              <a-col :span="6">
                <!-- begin vid_ex78826yps 表单项容器_25iil5ogsk -->
                <a-form-item name="o_hcyybgo1cf" :rules="r_1ztoyz6oqs_rules[`o_hcyybgo1cf`]" class="vid_ex78826yps" :label-col='{"span":6}' :wrapper-col='{"span":18}'>
                  <!-- begin vid_7t34a307dt 日期_e4br8a2qp0 -->
                  <a-date-picker
                    class="vid_7t34a307dt"
                    :getPopupContainer="(node) => node.parentNode"
                    v-model:value="r_1ztoyz6oqs.o_hcyybgo1cf"
                    :format="'YYYY-MM'"
                    :valueFormat="'YYYY-MM'"
                    :picker="'month'"
                    :showTime="vid_7t34a307dt_props.showTime"
                    @change="handle_vid_7t34a307dt_change"
                  >
                  </a-date-picker>
                  <!-- end vid_7t34a307dt 日期_e4br8a2qp0 -->
                  <template #label>
                    <!-- begin vid_q2et5y1t4h 提交月份 -->
                    <span class="vid_q2et5y1t4h"> 提交月份 </span>
                    <!-- end vid_q2et5y1t4h 提交月份 -->
                  </template>
                </a-form-item>
                <!-- end vid_ex78826yps 表单项容器_25iil5ogsk -->
              </a-col>
              <a-col :span="6"> </a-col>
              <a-col :span="6"> </a-col>
            </a-row>
            <!-- end vid_nj8j5fa33d 布局容器_94yfdlecqw -->
          </a-form>
          <!-- end vid_1bj87coo4d 表单容器_2lqv8mn3gv -->
          <!-- begin vid_4aknukyy93 表格_wop5yj6p10 -->
          <!-- 表格_wop5yj6p10 -->
          <a-table
            class="vid_4aknukyy93"
            :editRowSaveLoading="vid_4aknukyy93_props.editRowSaveLoading"
            :sorter="vid_4aknukyy93_props.sorter"
            :currentRow="vid_4aknukyy93_props.currentRow"
            :selectedRowList="vid_4aknukyy93_props.selectedRowList"
            :data-source="vid_4aknukyy93_options()"
            @change="handle_vid_4aknukyy93_change"
            :columns="vid_4aknukyy93_columns"
            :pagination="false"
            row-key="id"
            @resizeColumn="(w, col) => handleResizeColumn(w, col, 'vid_4aknukyy93')"
            :scroll="{ x: 'max-content', scrollToFirstRowOnChange: true, }"
            :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped-even' : 'table-striped-odd')"
          >
            <template #headerCell="{ title, column }">
              <TableHeaderCell :title="title" :column="column" />
            </template>
            <template #bodyCell="{ text, column, record, index }">
              <!-- 操作列 -->
              <div v-if="column.dataIndex === 'vid_4aknukyy93_operation'" class="operation-cell">
                <!-- 如果当前行处于编辑状态，则只显示 保存 和 取消 两个按钮 -->
                <template v-if="vid_4aknukyy93_props.editRecordMap[index]">
                  <a-button type="link" :loading="vid_4aknukyy93_props.editRowSaveLoading[index]" @click="handle_vid_4aknukyy93_saveRecord(record, index)">保存</a-button>
                  <a-button type="link" @click="handle_vid_4aknukyy93_cancelEditRecord(record, index)">取消</a-button>
                </template>
                <template v-else>
                  <a-button type="link" @click="handle_vid_4aknukyy93_editRecord(record, index)">编辑</a-button>
                </template>
              </div>

              <!-- 序号列 -->
              <template v-if="column && column.dataIndex === 'vid_4aknukyy93_serialNumber'">
                {{ index + 1 }}
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"项目名称"} 列内容 -->
              <template v-if="column.dataIndex === 'projectName' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"项目阶段"} 列内容 -->
              <template v-if="column.dataIndex === 'projectPhase' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务名称"} 列内容 -->
              <template v-if="column.dataIndex === 'taskName' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务编码"} 列内容 -->
              <template v-if="column.dataIndex === 'taskCode' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"优先级"} 列内容 -->
              <template v-if="column.dataIndex === 'priority' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务类型"} 列内容 -->
              <template v-if="column.dataIndex === 'taskType' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务状态"} 列内容 -->
              <template v-if="column.dataIndex === 'taskStatus' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"计划完成"} 列内容 -->
              <template v-if="column.dataIndex === 'planCompletionTime' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"实际完成"} 列内容 -->
              <template v-if="column.dataIndex === 'actualCompletionTime' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"计划工时"} 列内容 -->
              <template v-if="column.dataIndex === 'planWorkHours' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"实际工时"} 列内容 -->
              <template v-if="column.dataIndex === 'actualWorkHours' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"工时投入状态"} 列内容 -->
              <template v-if="column.dataIndex === 'workHourStatus' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"是否参与该任务"} 列内容 -->
              <template v-if="column.dataIndex === 'participationStr' && !column.customRender">
                <options-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_4aknukyy93_props.boundaryValueMap"
                  :dataSource="vid_4aknukyy93_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="vid_4aknukyy93_props.editRecordMap[index] ? vid_4aknukyy93_props.editRecordMap[index][column.dataIndex] : text"
                  :isEdit="!!vid_4aknukyy93_props.editRecordMap[index]"
                  @change="value => handle_vid_4aknukyy93_cellContentChange(index, 'participationStr', value)"
                />
              </template>
            </template>
          </a-table>
          <!-- end vid_4aknukyy93 表格_wop5yj6p10 -->
          <!-- begin vid_hif07bxzyz 表格_y9e7edndhj -->
          <!-- 表格_y9e7edndhj -->
          <a-table
            class="vid_hif07bxzyz"
            :editRowSaveLoading="vid_hif07bxzyz_props.editRowSaveLoading"
            :sorter="vid_hif07bxzyz_props.sorter"
            :currentRow="vid_hif07bxzyz_props.currentRow"
            :selectedRowList="vid_hif07bxzyz_props.selectedRowList"
            :data-source="vid_hif07bxzyz_options()"
            @change="handle_vid_hif07bxzyz_change"
            :columns="vid_hif07bxzyz_columns"
            :pagination="false"
            row-key="id"
            @resizeColumn="(w, col) => handleResizeColumn(w, col, 'vid_hif07bxzyz')"
            :scroll="{ x: 'max-content', scrollToFirstRowOnChange: true, }"
            :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped-even' : 'table-striped-odd')"
          >
            <template #headerCell="{ title, column }">
              <TableHeaderCell :title="title" :column="column" />
            </template>
            <template #bodyCell="{ text, column, record, index }">
              <!-- 序号列 -->
              <template v-if="column && column.dataIndex === 'vid_hif07bxzyz_serialNumber'">
                {{ index + 1 }}
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"其他日报工作类型"} 列内容 -->
              <template v-if="column.dataIndex === 'otherWorkTypes' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_hif07bxzyz_props.boundaryValueMap"
                  :dataSource="vid_hif07bxzyz_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"工时"} 列内容 -->
              <template v-if="column.dataIndex === 'actualWorkHours' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_hif07bxzyz_props.boundaryValueMap"
                  :dataSource="vid_hif07bxzyz_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
            </template>
          </a-table>
          <!-- end vid_hif07bxzyz 表格_y9e7edndhj -->
          <!-- begin vid_76203tnvq2 容器_e37mz6ytjz -->
          <al-box class="vid_76203tnvq2">
            <!-- begin vid_pmi3xs7o8s 员工月度工作自评 -->
            <span class="vid_pmi3xs7o8s"> 员工月度工作自评 </span>
            <!-- end vid_pmi3xs7o8s 员工月度工作自评 -->
            <!-- begin vid_wp292cf9yz 文本域_j5cppzz4iw -->
            <a-textarea class="vid_wp292cf9yz" v-model:value="vid_wp292cf9yz_props.value" :autoSize="true" :placeholder="'请输入'"> </a-textarea>
            <!-- end vid_wp292cf9yz 文本域_j5cppzz4iw -->
          </al-box>
          <!-- end vid_76203tnvq2 容器_e37mz6ytjz -->
        </al-box>
        <!-- end vid_8ua7p6zegw 容器_db9hy4prrv -->
        <!-- begin vid_3txe6xik0g 容器_xy3cikiwvi -->
        <al-box class="vid_3txe6xik0g">
          <!-- begin vid_d5a6pbkfez 取消 -->
          <a-button class="vid_d5a6pbkfez" @click="handle_vid_d5a6pbkfez_click"> 取消 </a-button>
          <!-- end vid_d5a6pbkfez 取消 -->
          <!-- begin vid_9etdrdv8wi 提交 -->
          <a-button class="vid_9etdrdv8wi" :type="'primary'" @click="handle_vid_9etdrdv8wi_click"> 提交 </a-button>
          <!-- end vid_9etdrdv8wi 提交 -->
        </al-box>
        <!-- end vid_3txe6xik0g 容器_xy3cikiwvi -->
      </a-modal>
      <!-- end vid_n1j6n0uivd 生成月度绩效 -->
      <!-- begin vid_yjpe38q3ew 容器_ko8aq5v12n -->
      <al-box class="vid_yjpe38q3ew">
        <!-- begin vid_vtapwwcetg 表单容器_6vm4q67v6e -->
        <a-form ref="vid_vtapwwcetg_ref" class="vid_vtapwwcetg" :model="g_xpqsgvqqbn" :formModel="vid_vtapwwcetg_props.formModel">
          <!-- begin vid_9mrs3g388z 布局容器_rtvoczw0ee -->
          <a-row class="vid_9mrs3g388z" :slots="'6:12:6'">
            <a-col :span="6">
              <!-- begin vid_0wxx6n1zq5 表单项容器_qq2msyiu9x -->
              <a-form-item name="p_z40uhsrvar" :rules="g_xpqsgvqqbn_rules[`p_z40uhsrvar`]" class="vid_0wxx6n1zq5" :label-col='{"span":5}' :wrapper-col='{"span":19}'>
                <!-- begin vid_wq6n01x43t 日期_0tqsr5a3ch -->
                <a-date-picker
                  class="vid_wq6n01x43t"
                  :getPopupContainer="(node) => node.parentNode"
                  v-model:value="g_xpqsgvqqbn.p_z40uhsrvar"
                  :format="'YYYY-MM'"
                  :valueFormat="'YYYY-MM'"
                  :placeholder="'请选择月份'"
                  :picker="'month'"
                  :showTime="vid_wq6n01x43t_props.showTime"
                  @change="handle_vid_wq6n01x43t_change"
                >
                </a-date-picker>
                <!-- end vid_wq6n01x43t 日期_0tqsr5a3ch -->
                <template #label>
                  <!-- begin vid_qe18b2tggh 月份筛选 -->
                  <span class="vid_qe18b2tggh"> 月份筛选 </span>
                  <!-- end vid_qe18b2tggh 月份筛选 -->
                </template>
              </a-form-item>
              <!-- end vid_0wxx6n1zq5 表单项容器_qq2msyiu9x -->
            </a-col>
            <a-col :span="12">
              <!-- begin vid_5eegv899jk 按钮_1xq6lkaxxj -->
              <a-button class="vid_5eegv899jk" :type="'primary'" @click="handle_vid_5eegv899jk_click"> 查询 </a-button>
              <!-- end vid_5eegv899jk 按钮_1xq6lkaxxj -->
              <!-- begin vid_n89j4a22ka 按钮_vzo3ujebx6 -->
              <a-button class="vid_n89j4a22ka" @click="handle_vid_n89j4a22ka_click"> 重置 </a-button>
              <!-- end vid_n89j4a22ka 按钮_vzo3ujebx6 -->
            </a-col>
            <a-col :span="6"> </a-col>
          </a-row>
          <!-- end vid_9mrs3g388z 布局容器_rtvoczw0ee -->
        </a-form>
        <!-- end vid_vtapwwcetg 表单容器_6vm4q67v6e -->
        <!-- begin vid_crx5tfx4we 容器_aevweu2kvs -->
        <al-box class="vid_crx5tfx4we"> </al-box>
        <!-- end vid_crx5tfx4we 容器_aevweu2kvs -->
        <!-- begin vid_twf3qkdyjm 容器_bg3syh6aw9 -->
        <al-box class="vid_twf3qkdyjm">
          <!-- begin vid_cioqymnx0i 布局容器_ext8obq7lz -->
          <a-row class="vid_cioqymnx0i" :slots="'12:12'">
            <a-col :span="12">
              <!-- begin vid_8gtw6xzhre 我的月度工作汇总 -->
              <span class="vid_8gtw6xzhre"> 我的月度工作汇总 </span>
              <!-- end vid_8gtw6xzhre 我的月度工作汇总 -->
            </a-col>
            <a-col :span="12">
              <!-- begin vid_b9effh4pye 容器_m0706k2l3f -->
              <al-box class="vid_b9effh4pye">
                <!-- begin vid_wli2sq1mj9 计划总工时： -->
                <span class="vid_wli2sq1mj9"> 计划总工时： </span>
                <!-- end vid_wli2sq1mj9 计划总工时： -->
                <!-- begin vid_5p2gvhnus1 24天 -->
                <span class="vid_5p2gvhnus1"> 24天 </span>
                <!-- end vid_5p2gvhnus1 24天 -->
                <!-- begin vid_sbopyx9g4l 实际总工时： -->
                <span class="vid_sbopyx9g4l"> 实际总工时： </span>
                <!-- end vid_sbopyx9g4l 实际总工时： -->
                <!-- begin vid_p2bhvel3g3 15天6小时 -->
                <span class="vid_p2bhvel3g3">
                  {{ renderStringInTemplate(vid_p2bhvel3g3_props.rt_text) }}
                </span>
                <!-- end vid_p2bhvel3g3 15天6小时 -->
                <!-- begin vid_8oidj0rciq 填写工作总结 -->
                <a-button class="vid_8oidj0rciq" :type="'primary'" @click="handle_vid_8oidj0rciq_click">
                  <template #icon
                    ><span role="img" class="anticon"
                      ><embed
                        style="width: 1em;height:1em;"
                        src="" /></span
                  ></template>

                  填写工作总结
                </a-button>
                <!-- end vid_8oidj0rciq 填写工作总结 -->
              </al-box>
              <!-- end vid_b9effh4pye 容器_m0706k2l3f -->
            </a-col>
          </a-row>
          <!-- end vid_cioqymnx0i 布局容器_ext8obq7lz -->
          <!-- begin vid_i6ohyx4zer 表格_我的月度工作汇总 -->
          <!-- 表格_我的月度工作汇总 -->
          <a-table
            class="vid_i6ohyx4zer"
            :totalNumber="vid_i6ohyx4zer_props.totalNumber"
            :bordered="true"
            :editRowSaveLoading="vid_i6ohyx4zer_props.editRowSaveLoading"
            :sorter="vid_i6ohyx4zer_props.sorter"
            :currentRow="vid_i6ohyx4zer_props.currentRow"
            :selectedRowList="vid_i6ohyx4zer_props.selectedRowList"
            :data-source="vid_i6ohyx4zer_options()"
            @change="handle_vid_i6ohyx4zer_change"
            :columns="vid_i6ohyx4zer_columns"
            :pagination="vid_i6ohyx4zer_pagination"
            row-key="id"
            @resizeColumn="(w, col) => handleResizeColumn(w, col, 'vid_i6ohyx4zer')"
            :scroll="{ x: 'max-content', scrollToFirstRowOnChange: true, }"
            :row-class-name="(_record, index) => (index % 2 === 1 ? 'table-striped-even' : 'table-striped-odd')"
          >
            <template #headerCell="{ title, column }">
              <TableHeaderCell :title="title" :column="column" />
            </template>
            <template #bodyCell="{ text, column, record, index }">
              <!-- 操作列 -->
              <div v-if="column.dataIndex === 'vid_i6ohyx4zer_operation'" class="operation-cell">
                <!-- 分组 备注等于0不可见 -->
                <template v-if="(record.descriptionFlag == '0')"> </template>

                <!-- 默认分组 -->
                <span v-else>
                  <a-button type="link" @click="handle_vid_i6ohyx4zer_clickBtn_aipicpxpd9(record)">备注</a-button>
                </span>
              </div>

              <!-- 序号列 -->
              <template v-if="column && column.dataIndex === 'vid_i6ohyx4zer_serialNumber'">
                {{ index + 1 }}
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"生成月份"} 列内容 -->
              <template v-if="column.dataIndex === 'generateMonth' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"项目名称"} 列内容 -->
              <template v-if="column.dataIndex === 'projectName' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"项目阶段"} 列内容 -->
              <template v-if="column.dataIndex === 'projectPhase' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务名称"} 列内容 -->
              <template v-if="column.dataIndex === 'taskName' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"是否参与该任务"} 列内容 -->
              <template v-if="column.dataIndex === 'participationStr' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务编码"} 列内容 -->
              <template v-if="column.dataIndex === 'taskCode' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"优先级"} 列内容 -->
              <template v-if="column.dataIndex === 'priority' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务类型"} 列内容 -->
              <template v-if="column.dataIndex === 'taskType' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务状态"} 列内容 -->
              <template v-if="column.dataIndex === 'taskStatusStr' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"计划完成"} 列内容 -->
              <template v-if="column.dataIndex === 'planCompletionTime' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"实际完成"} 列内容 -->
              <template v-if="column.dataIndex === 'actualCompletionTime' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"计划工时"} 列内容 -->
              <template v-if="column.dataIndex === 'planWorkHours' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"实际工时"} 列内容 -->
              <template v-if="column.dataIndex === 'actualWorkHours' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"工时投入状态"} 列内容 -->
              <template v-if="column.dataIndex === 'workHourStatus' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"备注标识"} 列内容 -->
              <template v-if="column.dataIndex === 'descriptionFlag' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
              <!-- {"type":"value","dataType":"STRING","rawDataType":"STRING","link":"","value":"任务ID"} 列内容 -->
              <template v-if="column.dataIndex === 'taskId' && !column.customRender">
                <text-table-cell
                  :rowData="record"
                  :conditionValueMap="vid_i6ohyx4zer_props.boundaryValueMap"
                  :dataSource="vid_i6ohyx4zer_props.contentDataSource[column.dataIndex]"
                  :columnsConfig="column"
                  :value="text"
                />
              </template>
            </template>
          </a-table>
          <!-- end vid_i6ohyx4zer 表格_我的月度工作汇总 -->
          <!-- begin vid_i3kbz0ndi9 布局容器_cbxhvy1v00 -->
          <a-row class="vid_i3kbz0ndi9" :slots="'12:12'">
            <a-col :span="12">
              <!-- begin vid_hmuya3urxt 容器_q28lggpfrg -->
              <al-box class="vid_hmuya3urxt">
                <!-- begin vid_6cyctwt7j8 我的月度工作自评 -->
                <span class="vid_6cyctwt7j8"> 我的月度工作自评 </span>
                <!-- end vid_6cyctwt7j8 我的月度工作自评 -->
                <!-- begin vid_42z4ws4a9c 文本域_kitnkdllxz -->
                <a-textarea class="vid_42z4ws4a9c" v-model:value="vid_42z4ws4a9c_props.value" :autoSize="true" :disabled="true"> </a-textarea>
                <!-- end vid_42z4ws4a9c 文本域_kitnkdllxz -->
              </al-box>
              <!-- end vid_hmuya3urxt 容器_q28lggpfrg -->
            </a-col>
            <a-col :span="12">
              <!-- begin vid_y7ag4g9wyj 容器_ajqt0ybfb1 -->
              <al-box class="vid_y7ag4g9wyj">
                <!-- begin vid_jprqbv5xsf 容器_v52gfcofq1 -->
                <al-box class="vid_jprqbv5xsf">
                  <!-- begin vid_vcz63q8hr2 直属领导月度工作评估 -->
                  <span class="vid_vcz63q8hr2"> 直属领导月度工作评估 </span>
                  <!-- end vid_vcz63q8hr2 直属领导月度工作评估 -->
                  <!-- begin vid_zivadrxe7d 文本域_7j03zfzyn6 -->
                  <a-textarea class="vid_zivadrxe7d" v-model:value="vid_zivadrxe7d_props.value" :autoSize="true" :disabled="true"> </a-textarea>
                  <!-- end vid_zivadrxe7d 文本域_7j03zfzyn6 -->
                </al-box>
                <!-- end vid_jprqbv5xsf 容器_v52gfcofq1 -->
              </al-box>
              <!-- end vid_y7ag4g9wyj 容器_ajqt0ybfb1 -->
            </a-col>
          </a-row>
          <!-- end vid_i3kbz0ndi9 布局容器_cbxhvy1v00 -->
        </al-box>
        <!-- end vid_twf3qkdyjm 容器_bg3syh6aw9 -->
      </al-box>
      <!-- end vid_yjpe38q3ew 容器_ko8aq5v12n -->
    </a-spin>
  </div>
</template>
<script setup lang="tsx">
  import {
      h, ref, reactive, toRaw, markRaw, watch, computed,
      onBeforeMount, onMounted, onBeforeUnmount, onUnmounted, onActivated, onDeactivated
    } from "vue";
    import { useRoute, useRouter } from 'vue-router';
    const router = useRouter();
    const route = useRoute();
    import { get, post, put, del, request, requestWithHeaders } from '@/utils/http/Axios';
    import { cloneDeep, localGet, merge, getDifferenceArray, traversalTreeStructure, checkCaseCondition, renderStringInTemplate, handleBreadcrumbJump, throttle, permission, getComponentParamsValue } from '@/utils/index';
    import { isNullOrEmpty, isEmptyArr, isNullOrUnDef, isContained, isArray, isEmpty, isObject } from '@/utils/is';
    import dayjs from 'dayjs';
    import { getPagePcChartsDataSourceConvert } from '@/utils/chart';
    import { message, notification, Modal } from 'ant-design-vue'
    import { propertyFormatByNumber, propertyFormatByPercentage, propertyFormatByDate, parseSubFromDataList } from '@/utils/format';
    import colorTheme from '@/design/custom-theme.json';
    
    import UserTableRecords from '@/model/UserTableRecords';
    import { getAppBaseUrl } from '@/utils/index';
    import { sendToken } from "@/hooks/useIframeToken";
    import { useSystemStore } from "@/store/modules/system";
    const systemStore = useSystemStore();
    

  import TextTableCell from '@/components/page/tableCell/text.vue';
  import TooltipTableCell from '@/components/page/tableCell/tooltip.vue';
  import NumberTableCell from '@/components/page/tableCell/number.vue';
  import ProgressTableCell from '@/components/page/tableCell/progress.vue';
  import OptionsTableCell from '@/components/page/tableCell/options.vue';
  import MultipleOptionsTableCell from '@/components/page/tableCell/multipleOptions.vue';
  import DatePickerTableCell from '@/components/page/tableCell/datePicker.vue';
  import RangePickerTableCell from '@/components/page/tableCell/rangePicker.vue';
  import RangeNumberTableCell from '@/components/page/tableCell/rangeNumber.vue';
  import BoolTableCell from '@/components/page/tableCell/bool.vue';
  import TableHeaderCell from '@/components/page/TableHeaderCell.vue';

      // 获取传入的流程ID和组件参数
      const props = defineProps({
            'processInstanceId': {
            type: [String,Number,Boolean],
            default: undefined,
        },
      })
      const immediateWatch = (source, callback) => {
        watch(source, callback, {deep: true,immediate: true })
      }



  /* -------------------------- 属性定义 -------------------------- */

      const setTimeOutList = [];
      const pageLoading = reactive({
        loading: false,
        tip: undefined
      });
      const authInfo = localGet('app-user-store');

    const vid_pg2n4111dr_props = reactive({
          visible: false,
      confirmLoading: undefined,
  })

    const vid_ye231q48cj_props = reactive({
          value: undefined,
  })

    const vid_f6xuw7ttyl_props = reactive({
          visible: false,
      confirmLoading: undefined,
  })

    const vid_ksftppjyqy_props = reactive({
          systemSort: [],
      sorter: {},
      editRowSaveLoading: {},
      currentRow: {"description":"","submitter":"","submissionTime":""},
      selectedRowList: {"submitter":[],"custom":[],"name":[],"description":[],"id":[],"submissionTime":[]},
      totalNumber: "",
      rt_tableConfig: {"layout":{"showHeader":true,"sticky":false,"operationColumnFixed":"default"},"pagination":{"current":1,"pageSizeOptions":"10,20,30,40","enable":true,"showTotal":true,"hideOnSinglePage":true,"pageSize":10,"simple":false,"sync":true,"showQuickJumper":false,"showSizeChanger":false},"scroll":{"x":"max-content","y":"","scrollToFirstRowOnChange":true},"style":{"contentStyle":{"borderColor":"#EBEBEB","enableContentStyle":true,"fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"evenLineBackColor":"#F8FAFC","textWeight":"400","fontSize":14,"oddLineBackColor":"#FFFFFF","textColor":"#262626"},"paginationStyle":{"layout":"bottomRight","size":"default"},"headerStyle":{"borderColor":"#EBEBEB","backgroundColor":"#3875FF","fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"textWeight":"600","fontSize":14,"enableTextStyle":true,"textColor":"#FFFFFF"}},"basic":{"rowSelection":false,"rowEdit":{"cancelText":"取消","editText":"编辑","saveText":"保存"},"title":"","showSequenceNumber":false,"rowKey":"id"}},
      columnList: [
          {
            id: 'dlk5b6h9dl',
            dataIndex: 'description',
            headerComment: false,
            title: '备注内容',
            ellipsis: true,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            width: '300px',
            resizable: true,
          },
          {
            id: 'c5k8te7a47',
            dataIndex: 'submitter',
            headerComment: false,
            title: '提交人',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'x0a1v62q68',
            dataIndex: 'submissionTime',
            headerComment: false,
            title: '提交时间',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },

        ],
      rawColumnList: [],
      // 进行行合并所需的排序规则，必须将其加到排序字段的前面，以实现合并单元格
      rowMergeSort: [],
      // 完整的排序规则：需要将行合并的排序规则和排序字段的排序规则赋给该属性；调接口时会使用其作为排序条件
      systemSort: [],
      // 条件格式需要的边界值映射：key为边界值id，value为边界值数据
      boundaryValueMap: {},
      // 表格单元格内容渲染需要的外部数据源：key为列，value为该列单元格的外部数据源配置
      contentDataSource: {},
  })

    const vid_wx1bzo1ky6_props = reactive({
          show: false,
      type: "error",
      content: "提交失败，请重试",
      duration: 3,
  })

    const vid_72tiek3uyj_props = reactive({
          show: false,
      type: "success",
      content: "提交成功！",
      duration: 3,
  })

    const vid_n1j6n0uivd_props = reactive({
          visible: false,
      confirmLoading: undefined,
  })

    const vid_1bj87coo4d_props = reactive({
          formModel: {"o_hcyybgo1cf":"","q_ukryd7c8vj":""},
  })

    const vid_7t34a307dt_props = reactive({
          showTime: undefined,
      value: undefined,
  })

    const vid_exwq7q5xpr_props = reactive({
          value: undefined,
  })

    const vid_4aknukyy93_props = reactive({
          systemSort: [],
      sorter: {},
      editRowSaveLoading: {},
      currentRow: {"projectName":"","projectPhase":"","taskName":"","taskCode":"","priority":"","taskType":"","taskStatus":"","planCompletionTime":"","actualCompletionTime":"","planWorkHours":"","actualWorkHours":"","workHourStatus":"","participationStr":""},
      selectedRowList: {"participation":[],"projectPhase":[],"custom9":[],"taskType":[],"taskCode":[],"actualWorkHours":[],"custom3":[],"custom4":[],"custom1":[],"id":[],"custom2":[],"custom7":[],"custom8":[],"custom5":[],"taskStatus":[],"custom6":[],"actualCompletionTime":[],"participationStr":[],"priority":[],"custom11":[],"custom10":[],"planWorkHours":[],"workHourStatus":[],"name":[],"taskName":[],"planCompletionTime":[],"projectName":[]},
      totalNumber: "",
      rt_tableConfig: {"layout":{"showHeader":true,"sticky":false,"operationColumnFixed":"default"},"pagination":{"current":1,"pageSizeOptions":"10,20,30,40","enable":false,"showTotal":false,"hideOnSinglePage":false,"pageSize":"8","simple":false,"sync":false,"showQuickJumper":false,"showSizeChanger":false},"scroll":{"x":"max-content","y":"","scrollToFirstRowOnChange":true},"style":{"contentStyle":{"borderColor":"#D9D9D9","enableContentStyle":true,"fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"evenLineBackColor":"#F8FAFC","textWeight":"400","fontSize":14,"oddLineBackColor":"#FFFFFF","textColor":"#262626"},"paginationStyle":{"layout":"bottomRight","size":"default"},"headerStyle":{"borderColor":"#D9D9D9","backgroundColor":"#3875FF","fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"textWeight":"600","fontSize":14,"enableTextStyle":true,"textColor":"#FFFFFF"}},"basic":{"rowSelection":false,"rowEdit":{"cancelText":"取消","editText":"编辑","saveText":"保存"},"title":"","showSequenceNumber":false,"rowKey":"id"}},
      columnList: [
          {
            id: 'pku5ynhzlj',
            dataIndex: 'projectName',
            headerComment: false,
            title: '项目名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'dse8oglbxy',
            dataIndex: 'projectPhase',
            headerComment: false,
            title: '项目阶段',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'qoprj43ici',
            dataIndex: 'taskName',
            headerComment: false,
            title: '任务名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'do5za5wtab',
            dataIndex: 'taskCode',
            headerComment: false,
            title: '任务编码',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'kfiv12x67e',
            dataIndex: 'priority',
            headerComment: false,
            title: '优先级',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'a30iveyhr6',
            dataIndex: 'taskType',
            headerComment: false,
            title: '任务类型',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'sgl6h1dafh',
            dataIndex: 'taskStatus',
            headerComment: false,
            title: '任务状态',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '76rrusy20r',
            dataIndex: 'planCompletionTime',
            headerComment: false,
            title: '计划完成',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '5cp3rbf2pp',
            dataIndex: 'actualCompletionTime',
            headerComment: false,
            title: '实际完成',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '8c8h0ed6u0',
            dataIndex: 'planWorkHours',
            headerComment: false,
            title: '计划工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'wej8dgel3d',
            dataIndex: 'actualWorkHours',
            headerComment: false,
            title: '实际工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'g76z2wo8lr',
            dataIndex: 'workHourStatus',
            headerComment: false,
            title: '工时投入状态',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '8tl7xkho8e',
            dataIndex: 'participationStr',
            headerComment: false,
            title: '是否参与该任务',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'OPTIONS',
            contentConfig: {"dataSourceConfig":{"staticDataSource":[{"label":"是","value":"是"},{"label":"否","value":"否"}],"isStatic":true,"isConversion":false,"conversionConfig":{"disabled":"disabled","label":"label","value":"value"},"connectorDataSource":{"type":"value","dataType":"ARRAY","rawDataType":"ARRAY","link":"","value":[]}},"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            rowEdit: true,
            resizable: true,
          },
          {
            dataIndex: 'vid_4aknukyy93_operation',
            title: '操作',
          },
        ],
      rawColumnList: [],
      // 进行行合并所需的排序规则，必须将其加到排序字段的前面，以实现合并单元格
      rowMergeSort: [],
      // 完整的排序规则：需要将行合并的排序规则和排序字段的排序规则赋给该属性；调接口时会使用其作为排序条件
      systemSort: [],
      // 条件格式需要的边界值映射：key为边界值id，value为边界值数据
      boundaryValueMap: {},
      // 表格单元格内容渲染需要的外部数据源：key为列，value为该列单元格的外部数据源配置
      contentDataSource: {
        participationStr: [{"label":"是","value":"是"},{"label":"否","value":"否"}],
      },
      // 备份正在进行编辑的数据行的原始数据
      editRecordMap: {},
  })

    const vid_hif07bxzyz_props = reactive({
          systemSort: [],
      sorter: {},
      editRowSaveLoading: {},
      currentRow: {"otherWorkTypes":"","actualWorkHours":""},
      selectedRowList: {"otherWorkTypes":[],"actualWorkHours":[],"name":[],"id":[]},
      totalNumber: "",
      rt_tableConfig: {"layout":{"showHeader":true,"sticky":false,"operationColumnFixed":"default"},"pagination":{"current":1,"pageSizeOptions":"10,20,30,40","enable":false,"showTotal":false,"hideOnSinglePage":false,"pageSize":"5","simple":false,"sync":true,"showQuickJumper":false,"showSizeChanger":false},"scroll":{"x":"max-content","y":"","scrollToFirstRowOnChange":true},"style":{"contentStyle":{"borderColor":"#D9D9D9","enableContentStyle":true,"fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"evenLineBackColor":"#F8FAFC","textWeight":"400","fontSize":14,"oddLineBackColor":"#FFFFFF","textColor":"#262626"},"paginationStyle":{"layout":"bottomRight","size":"default"},"headerStyle":{"borderColor":"#D9D9D9","backgroundColor":"#3875FF","fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"textWeight":"600","fontSize":14,"enableTextStyle":true,"textColor":"#FFFFFF"}},"basic":{"rowSelection":false,"rowEdit":{"cancelText":"取消","editText":"编辑","saveText":"保存"},"title":"","showSequenceNumber":false,"rowKey":"id"}},
      columnList: [
          {
            id: 'iiwaj3bor6',
            dataIndex: 'otherWorkTypes',
            headerComment: false,
            title: '其他日报工作类型',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'rvjtclisqf',
            dataIndex: 'actualWorkHours',
            headerComment: false,
            title: '工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },

        ],
      rawColumnList: [],
      // 进行行合并所需的排序规则，必须将其加到排序字段的前面，以实现合并单元格
      rowMergeSort: [],
      // 完整的排序规则：需要将行合并的排序规则和排序字段的排序规则赋给该属性；调接口时会使用其作为排序条件
      systemSort: [],
      // 条件格式需要的边界值映射：key为边界值id，value为边界值数据
      boundaryValueMap: {},
      // 表格单元格内容渲染需要的外部数据源：key为列，value为该列单元格的外部数据源配置
      contentDataSource: {},
  })

    const vid_wp292cf9yz_props = reactive({
          value: "",
  })

    const vid_vtapwwcetg_props = reactive({
          formModel: {"p_z40uhsrvar":""},
  })

    const vid_wq6n01x43t_props = reactive({
          showTime: undefined,
      value: "",
  })

    const vid_p2bhvel3g3_props = reactive({
          rt_text: undefined,
  })

    const vid_i6ohyx4zer_props = reactive({
          systemSort: [],
      sorter: {},
      editRowSaveLoading: {},
      currentRow: {"generateMonth":"","projectName":"","projectPhase":"","taskName":"","participationStr":"","taskCode":"","priority":"","taskType":"","taskStatusStr":"","planCompletionTime":"","actualCompletionTime":"","planWorkHours":"","actualWorkHours":"","workHourStatus":"","descriptionFlag":"","taskId":""},
      selectedRowList: {"participation":[],"projectPhase":[],"custom9":[],"taskType":[],"taskCode":[],"actualWorkHours":[],"custom3":[],"custom4":[],"custom1":[],"custom2":[],"custom7":[],"custom8":[],"custom5":[],"taskStatus":[],"custom6":[],"actualCompletionTime":[],"participationStr":[],"priority":[],"custom11":[],"taskStatusStr":[],"custom10":[],"custom13":[],"custom12":[],"planWorkHours":[],"descriptionFlag":[],"custom14":[],"workHourStatus":[],"taskName":[],"planCompletionTime":[],"projectName":[],"generateMonth":[],"taskId":[]},
      totalNumber: undefined,
      rt_tableConfig: {"layout":{"showHeader":true,"sticky":false,"operationColumnFixed":"default"},"pagination":{"current":1,"pageSizeOptions":"10,20,30,40","enable":true,"showTotal":true,"hideOnSinglePage":false,"pageSize":"10","simple":false,"sync":true,"showQuickJumper":true,"showSizeChanger":false},"scroll":{"x":"max-content","y":"","scrollToFirstRowOnChange":true},"style":{"contentStyle":{"borderColor":"#D9D9D9","enableContentStyle":true,"fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"evenLineBackColor":"#F8FAFC","textWeight":"400","fontSize":14,"oddLineBackColor":"#FFFFFF","textColor":"#262626"},"paginationStyle":{"layout":"bottomRight","size":"default"},"headerStyle":{"borderColor":"#D9D9D9","backgroundColor":"#3875FF","fontFamily":"arial, helvetica, \"microsoft yahei\"","lintHeight":40,"borderWidth":1,"textWeight":"600","fontSize":14,"enableTextStyle":true,"textColor":"#FFFFFF"}},"basic":{"rowSelection":false,"rowEdit":{"cancelText":"取消","editText":"编辑","saveText":"保存"},"title":"","showSequenceNumber":false,"rowKey":"id"}},
      columnList: [
          {
            id: 'tt4s6wljf4',
            dataIndex: 'projectName',
            headerComment: false,
            title: '项目名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'z7toa5gmic',
            dataIndex: 'projectPhase',
            headerComment: false,
            title: '项目阶段',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '7pd5usidy5',
            dataIndex: 'taskName',
            headerComment: false,
            title: '任务名称',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'left',
            customHeaderCell: () => ({ style: { 'text-align': 'left' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 't83rvw4f1g',
            dataIndex: 'priority',
            headerComment: false,
            title: '优先级',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: '7j2l5bdxn5',
            dataIndex: 'taskType',
            headerComment: false,
            title: '任务类型',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'mgxlcvvy39',
            dataIndex: 'taskStatusStr',
            headerComment: false,
            title: '任务状态',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'xnkr03f5be',
            dataIndex: 'planCompletionTime',
            headerComment: false,
            title: '计划完成',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'b9bxpmnk0t',
            dataIndex: 'actualCompletionTime',
            headerComment: false,
            title: '实际完成',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'vwhqtz280b',
            dataIndex: 'planWorkHours',
            headerComment: false,
            title: '计划工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'lp4l9jwz29',
            dataIndex: 'actualWorkHours',
            headerComment: false,
            title: '实际工时',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            id: 'bvddc7c0wf',
            dataIndex: 'workHourStatus',
            headerComment: false,
            title: '工时投入状态',
            ellipsis: false,
            headerOverflow: 'ellipsis',
            contentAlign: 'center',
            customHeaderCell: () => ({ style: { 'text-align': 'center' } }),
            rowEditConditions: [],
            contentType: 'TEXT',
            contentConfig: {"conditionStyle":[],"boolConfig":"collection"},
            // 使用插槽的列，设置单元格padding为0，padding样式在内容插槽中已加，以便内容插槽设置背景色时可以占满整个单元格；该样式会在计算属性生成列配置时加入customCell
            customCellStyle: { padding: 0 },
            resizable: true,
          },
          {
            dataIndex: 'vid_i6ohyx4zer_operation',
            title: '操作',
          },
        ],
      rawColumnList: [],
      // 进行行合并所需的排序规则，必须将其加到排序字段的前面，以实现合并单元格
      rowMergeSort: [
        { order: 'generateMonth', direction: 'ASC' },
  { order: 'projectName', direction: 'ASC' },
      ],
      // 完整的排序规则：需要将行合并的排序规则和排序字段的排序规则赋给该属性；调接口时会使用其作为排序条件
      systemSort: [
        { order: 'generateMonth', direction: 'ASC' },
  { order: 'projectName', direction: 'ASC' },
      ],
      // 条件格式需要的边界值映射：key为边界值id，value为边界值数据
      boundaryValueMap: {},
      // 表格单元格内容渲染需要的外部数据源：key为列，value为该列单元格的外部数据源配置
      contentDataSource: {},
  })

    const vid_zivadrxe7d_props = reactive({
          value: undefined,
  })

    const vid_42z4ws4a9c_props = reactive({
          value: undefined,
  })
  // ---------------------------- 定义模型数据 ----------------------------

    const r_1ztoyz6oqs = reactive({})


    const g_xpqsgvqqbn = reactive({"p_z40uhsrvar":""})

    // ============================ 定义模型数据 ============================


    const r_1ztoyz6oqs_rules = reactive({
          o_hcyybgo1cf: [
          { required: true, message: '请输入月份!', trigger: 'blur' },
      ],

    })



    const g_xpqsgvqqbn_rules = reactive({

    })


      // 处理校验
      const setSubFormName =(parentInfo, name)=>{
        return [parentInfo.parents, parentInfo.cycleIndex, name];
      }


    const vid_ksftppjyqy_options_raw = ref([])

      const vid_ksftppjyqy_options = computed(() => {
        return () => vid_ksftppjyqy_options_raw.value
      })



    const vid_4aknukyy93_options_raw = ref([])

      const vid_4aknukyy93_options = computed(() => {
        return () => vid_4aknukyy93_options_raw.value
      })



    const vid_hif07bxzyz_options_raw = ref([])

      const vid_hif07bxzyz_options = computed(() => {
        return () => vid_hif07bxzyz_options_raw.value
      })



    const vid_i6ohyx4zer_options_raw = ref([])

      const vid_i6ohyx4zer_options = computed(() => {
        return () => vid_i6ohyx4zer_options_raw.value
      })

  // 图表组件 表格_备注 条件格式数据依赖
  const vid_ksftppjyqy_chartConditionDependencyMap = ref({
  })
  // 图表组件 表格_wop5yj6p10 条件格式数据依赖
  const vid_4aknukyy93_chartConditionDependencyMap = ref({
  })
  // 图表组件 表格_y9e7edndhj 条件格式数据依赖
  const vid_hif07bxzyz_chartConditionDependencyMap = ref({
  })
  // 图表组件 表格_我的月度工作汇总 条件格式数据依赖
  const vid_i6ohyx4zer_chartConditionDependencyMap = ref({
  })
  /* ========================== 属性定义 ========================== */


  /* -------------------------- 元素数据引用 -------------------------- */
  // 组件 表单容器_2lqv8mn3gv ref 的引用
  const vid_1bj87coo4d_ref = ref(null);
  // 组件 表单容器_6vm4q67v6e ref 的引用
  const vid_vtapwwcetg_ref = ref(null);

  /* ========================== 元素数据引用 ========================== */


  /* -------------------------- 页面数据 -------------------------- */

    // 页面数据 查询月度绩效的数据反显
    const dataConnector_conn_ceukezuoe3_response = ref();
    const dataConnector_conn_ceukezuoe3 = async (additionParams = {}) => {
        const exec = async () => {
          // 获取参数
          const params = {
            ppmGenOtherWorkDetailDtoList: undefined,
          createdBy: undefined,
          pageNo: vid_i6ohyx4zer_props?.rt_tableConfig.pagination.current,
          pageSize: vid_i6ohyx4zer_props?.rt_tableConfig.pagination.pageSize,
          selfEvaluation: undefined,
          submissionMonth: g_xpqsgvqqbn.p_z40uhsrvar,
          ppmGenProjectWorkDetailDtoList: undefined,
          myWork: true
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }

          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/query/monthPerformance';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params, {
                headers: undefined
              }).then(async (resp) => {
            dataConnector_conn_ceukezuoe3_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 生成月度绩效保存
    const dataConnector_conn_3umm8f2coy_response = ref();
    const dataConnector_conn_3umm8f2coy = async (additionParams = {}) => {
        const exec = async () => {
          // 获取参数
          const params = {
            ppmGenOtherWorkDetailDtoList: dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenOtherWorkDetailDtoList,
          createdBy: r_1ztoyz6oqs.q_ukryd7c8vj,
          selfEvaluation: vid_wp292cf9yz_props?.value,
          submissionMonth: r_1ztoyz6oqs.o_hcyybgo1cf,
          pageNum: undefined,
          ppmGenProjectWorkDetailDtoList: dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenProjectWorkDetailDtoList
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }

          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/generate/monthPerformance/save';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params, {
                headers: undefined
              }).then(async (resp) => {
            dataConnector_conn_3umm8f2coy_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 生成月度绩效反显
    const dataConnector_conn_jtwoa82pzq_response = ref();
    const dataConnector_conn_jtwoa82pzq = async (additionParams = {}) => {
        const exec = async () => {
          // 获取参数
          const params = {
            createdBy: undefined,
          selfEvaluation: undefined,
          submissionMonth: r_1ztoyz6oqs.o_hcyybgo1cf,
          myWork: undefined
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }

          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/generate/monthPerformance/list';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params, {
                headers: undefined
              }).then(async (resp) => {
            dataConnector_conn_jtwoa82pzq_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 查询任务备注列表
    const dataConnector_conn_01rt3ve6ay_response = ref();
    const dataConnector_conn_01rt3ve6ay = async (additionParams = {}) => {
        const exec = async () => {
          // 获取参数
          const params = {

          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }

          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/queryDescription/{taskId}';
          // 替换url中的变量
          url = url.replace('{taskId}', String(vid_i6ohyx4zer_props?.currentRow.taskId))
          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return get(url, params, {
                headers: undefined
              }).then(async (resp) => {
            dataConnector_conn_01rt3ve6ay_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 总结和评价编辑时反显
    const dataConnector_conn_z3s98wbt0v_response = ref();
    const dataConnector_conn_z3s98wbt0v = async (additionParams = {}) => {
        const exec = async () => {
          // 获取参数
          const params = {
            employeeId: undefined,
          submissionMonth: g_xpqsgvqqbn.p_z40uhsrvar
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }

          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/summaryAndEvaluation/search';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params, {
                headers: undefined
              }).then(async (resp) => {
            dataConnector_conn_z3s98wbt0v_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


    // 页面数据 填写工作总结
    const dataConnector_conn_q5055q3uo0_response = ref();
    const dataConnector_conn_q5055q3uo0 = async (additionParams = {}) => {
        const exec = async () => {
          // 获取参数
          const params = {
            selfEvaluation: vid_ye231q48cj_props?.value,
          submissionMonth: g_xpqsgvqqbn.p_z40uhsrvar
          };

          // 注入附加的参数
          try {
            merge(params, additionParams);
          } catch (error) {
            console.log(error)
          }

          // 判断加载提示

          // 处理URL
          let url = '/solution-ppm/api/v2/built-in-system-ppm/performanceManagement/workSummary/save';
          // 替换url中的变量

          // 排除空参数  日期组件重置后的空参数是[null] 或者[undefined]
          Object.keys(params).forEach(key=>{ if(params[key] === null){ delete params[key] }else if( Object.prototype.toString.call(params[key]) === '[object Object]' ){ Object.keys(params[key]).forEach(childKey=>{ if(params[key][childKey] === null || (Array.isArray(params[key][childKey]) && params[key][childKey].length === 1 && isNullOrUnDef(params[key][childKey]?.[0]))){ delete params[key][childKey] }}) } });
          return post(url, params, {
                headers: undefined
              }).then(async (resp) => {
            dataConnector_conn_q5055q3uo0_response.value = resp;

            return resp;
          }).catch(async (e) => {


            return Promise.reject(e);
          }).finally(async () => {


          })
        }

          return await exec()

    }


  /* ========================== 页面数据 ========================== */



  /* -------------------------- 响应 -------------------------- */

    // 页面交互 保存月度交互
    const response_oc8lvxk5n0 = async () => {

    const branchList = [{
          conditionType: 'EQUALS',
          value: 200,
          exec: async () => {
              vid_72tiek3uyj_props.show = true;
          }
      },{
          conditionType: 'NOT_EQUALS',
          value: 200,
          exec: async () => {
              vid_wx1bzo1ky6_props.show = true;
          }
      }];

    const matchBranch = branchList.find(item => checkCaseCondition(dataConnector_conn_3umm8f2coy_response?.value?.code, item.conditionType, item.value));
    // 匹配到的分支
    if (matchBranch) {
      matchBranch.exec();
      return;
    }
    // 默认分支动作


    }


    // 页面交互 填写工作总结交互
    const response_t8hhr7s7qr = async () => {

    const branchList = [{
          conditionType: 'EQUALS',
          value: 'success',
          exec: async () => {
              vid_72tiek3uyj_props.show = true;
  await dataConnector_conn_ceukezuoe3()
  vid_pg2n4111dr_props.visible = false;
  customFunction_zq11appdfm();
          }
      },{
          conditionType: 'EQUALS',
          value: 'fail',
          exec: async () => {
              vid_wx1bzo1ky6_props.show = true;
          }
      }];

    const matchBranch = branchList.find(item => checkCaseCondition(dataConnector_conn_q5055q3uo0_response?.value?.status, item.conditionType, item.value));
    // 匹配到的分支
    if (matchBranch) {
      matchBranch.exec();
      return;
    }
    // 默认分支动作


    }

  /* ========================== 响应 ========================== */


  /* -------------------------- 函数 -------------------------- */

    // 自定义函数 删除员工月度工作自评
    const customFunction_rm58ow5j3s =  (params) => {
      vid_wp292cf9yz_props.value = ''

    }


    // 自定义函数 校验时间
    const customFunction_z1uz2x63e0 =  (params) => {
        let currentDate = new Date();
    let currentYear = currentDate.getFullYear();
    let currentMonth = currentDate.getMonth() + 1;
    var selectedDate = new Date(g_xpqsgvqqbn.p_z40uhsrvar);
    let btn = document.querySelector('.vid_8oidj0rciq')
    if (
      selectedDate.getFullYear() === currentYear &&
      (selectedDate.getMonth() + 1 === currentMonth || selectedDate.getMonth() + 1 === currentMonth - 1)
    ) {
      btn.disabled = false
    } else {
      btn.disabled = true
    }

    }


    // 自定义函数 清除工作总结文本
    const customFunction_zq11appdfm =  (params) => {
      vid_ye231q48cj_props.value = ""
    }

  /* ========================== 函数 ========================== */


  /* -------------------------- 页面参数 -------------------------- */

    const pageParameter_state = reactive({
        'processInstanceId': props.processInstanceId ?? route.query.processInstanceId,
    })

  /* ========================== 页面参数 ========================== */


  /* -------------------------- 组件事件处理方法 -------------------------- */

    // ---------------------------- 组件数据同步 ----------------------------
    // 处理 文本域_请输入工作总结 的 value 属性关联
  watch(() => dataConnector_conn_z3s98wbt0v_response?.value?.data?.selfEvaluation,
    () => {
      let dataList = dataConnector_conn_z3s98wbt0v_response?.value?.data?.selfEvaluation

      vid_ye231q48cj_props.value = dataList;
    },
    {deep: true})
  // 处理 表格_备注 的 systemList 属性关联
  watch(() => dataConnector_conn_01rt3ve6ay_response?.value?.data?.taskDescriptionDtoList,
    () => {
      let dataList = dataConnector_conn_01rt3ve6ay_response?.value?.data?.taskDescriptionDtoList

      vid_ksftppjyqy_options_raw.value = dataList;
    },
    {deep: true})
  // 处理 日期_e4br8a2qp0 的 value 属性关联
  watch(() => dataConnector_conn_jtwoa82pzq_response?.value?.data?.submissionMonth,
    () => {
      let dataList = dataConnector_conn_jtwoa82pzq_response?.value?.data?.submissionMonth

      r_1ztoyz6oqs.o_hcyybgo1cf = dataList;
    },
    {deep: true})
  // 处理 输入框_5nfzgulcjv 的 value 属性关联
  watch(() => dataConnector_conn_jtwoa82pzq_response?.value?.data?.createdBy,
    () => {
      let dataList = dataConnector_conn_jtwoa82pzq_response?.value?.data?.createdBy

      r_1ztoyz6oqs.q_ukryd7c8vj = dataList;
    },
    {deep: true})
  // 处理 表格_wop5yj6p10 的 systemList 属性关联
  watch(() => dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenProjectWorkDetailDtoList,
    () => {
      let dataList = dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenProjectWorkDetailDtoList

      vid_4aknukyy93_options_raw.value = dataList;
    },
    {deep: true})
  // 处理 表格_y9e7edndhj 的 systemList 属性关联
  watch(() => dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenOtherWorkDetailDtoList,
    () => {
      let dataList = dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenOtherWorkDetailDtoList

      vid_hif07bxzyz_options_raw.value = dataList;
    },
    {deep: true})
  // 处理 15天6小时 的 rt_text 属性关联
  watch(() => dataConnector_conn_ceukezuoe3_response?.value?.data?.actualTotalWorkHours,
    () => {
      let dataList = dataConnector_conn_ceukezuoe3_response?.value?.data?.actualTotalWorkHours

      vid_p2bhvel3g3_props.rt_text = dataList;
    },
    {deep: true})
  // 处理 表格_我的月度工作汇总 的 systemList 属性关联
  watch(() => dataConnector_conn_ceukezuoe3_response?.value?.data?.ppmGenProjectWorkDetailDtoList,
    () => {
      let dataList = dataConnector_conn_ceukezuoe3_response?.value?.data?.ppmGenProjectWorkDetailDtoList

      vid_i6ohyx4zer_options_raw.value = dataList;
    },
    {deep: true})
  // 处理 表格_我的月度工作汇总 的 totalNumber 属性关联
  watch(() => dataConnector_conn_ceukezuoe3_response?.value?.data?.totalElements,
    () => {
      let dataList = dataConnector_conn_ceukezuoe3_response?.value?.data?.totalElements

      vid_i6ohyx4zer_props.totalNumber = dataList;
    },
    {deep: true})
  // 处理 文本域_7j03zfzyn6 的 value 属性关联
  watch(() => dataConnector_conn_ceukezuoe3_response?.value?.data?.leaderEvaluation,
    () => {
      let dataList = dataConnector_conn_ceukezuoe3_response?.value?.data?.leaderEvaluation

      vid_zivadrxe7d_props.value = dataList;
    },
    {deep: true})
  // 处理 文本域_kitnkdllxz 的 value 属性关联
  watch(() => dataConnector_conn_ceukezuoe3_response?.value?.data?.selfEvaluation,
    () => {
      let dataList = dataConnector_conn_ceukezuoe3_response?.value?.data?.selfEvaluation

      vid_42z4ws4a9c_props.value = dataList;
    },
    {deep: true})
    // ============================ 组件数据同步 ============================

  /**
  * 处理元素 对话框 的 cancel 事件
  */
  let handle_vid_pg2n4111dr_cancel = throttle(async (...params) => {
  vid_pg2n4111dr_props.visible = false;
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_c15w1vqpu7_click = throttle(async (...params) => {
  vid_pg2n4111dr_props.visible = false;
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_13rtsmyllx_click = throttle(async (...params) => {
  await dataConnector_conn_q5055q3uo0()
  response_t8hhr7s7qr()
  }, 500)
  /**
  * 处理元素 表格 的 change 事件
  */
  let handle_vid_ksftppjyqy_change = throttle(async (...params) => {
  // 处理分页器相关数据
  const [pagination, filters, sorter] = params;
  const { current, pageSize } = pagination;
  vid_ksftppjyqy_props.rt_tableConfig.pagination.current = current;
  vid_ksftppjyqy_props.rt_tableConfig.pagination.pageSize = pageSize;
  // 处理排序相关数据
  const { field, order } = sorter;
  const sorterList = [...vid_ksftppjyqy_props.rowMergeSort];
  let sorterValue = {};
  if (order === 'descend') {
  sorterValue = { order: field, direction: 'DESC' }
  } else if (order === 'ascend') {
  sorterValue = { order: field, direction: 'ASC' }
  }
  sorterList.push(sorterValue);
  vid_ksftppjyqy_props.systemSort = sorterList;
  vid_ksftppjyqy_props.sorter = sorterValue;
  }, 500)
  /**
  * 处理元素 对话框 的 cancel 事件
  */
  let handle_vid_n1j6n0uivd_cancel = throttle(async (...params) => {
  vid_n1j6n0uivd_props.visible = false;
  customFunction_rm58ow5j3s();
  // 这里组件可能还未初始化， 这里使用可选链的形式进行函数触发
  try {
  await vid_1bj87coo4d_ref.value?.resetFields();
  } catch (error) { console.log(error);}
  }, 500)
  /**
  * 处理元素 对话框 的 ok 事件
  */
  let handle_vid_n1j6n0uivd_ok = throttle(async (...params) => {
  await dataConnector_conn_3umm8f2coy()
  vid_n1j6n0uivd_props.visible = false;
  }, 500)
  /**
  * 处理元素 日期 的 change 事件
  */
  let handle_vid_7t34a307dt_change = throttle(async (...params) => {
  await dataConnector_conn_jtwoa82pzq()
  }, 500)
  /**
  * 处理元素 表格 的 editRecord 事件
  */
  let handle_vid_4aknukyy93_editRecord = throttle(async (...params) => {
  // 存储改行的编辑数据
  const [record, index] = params;
  vid_4aknukyy93_props.editRecordMap[index] = cloneDeep(record);
  vid_4aknukyy93_props.currentRow = record;
  }, 500)
  /**
  * 处理元素 表格 的 cancelEditRecord 事件
  */
  let handle_vid_4aknukyy93_cancelEditRecord = throttle(async (...params) => {
  // 删除表格改行的编辑数据
  const [record, index] = params;
  delete vid_4aknukyy93_props.editRecordMap[index];
  vid_4aknukyy93_props.currentRow = record;
  vid_4aknukyy93_props.editRowSaveLoading[index] = false;
  }, 500)
  /**
  * 处理元素 表格 的 cellContentChange 事件
  */
  let handle_vid_4aknukyy93_cellContentChange = throttle(async (...params) => {
  const [index, key, value] = params;
  vid_4aknukyy93_props.editRecordMap[index][key] = value;
  }, 500)
  /**
  * 处理元素 表格 的 saveRecord 事件
  */
  let handle_vid_4aknukyy93_saveRecord = throttle(async (...params) => {
  // 存储表格当前行的编辑数据
  const [record, index] = params;
  vid_4aknukyy93_props.currentRow = vid_4aknukyy93_props.editRecordMap[index];
  const subFormKeySet = new Set();
  Object.keys(vid_4aknukyy93_props.currentRow).forEach((key) => {
  const [sub, subKey] = key.split('_$_');
  if (subKey) {
  subFormKeySet.add(sub);
  }
  });
  subFormKeySet.forEach((sub) => {
  const subData = vid_4aknukyy93_props.currentRow[sub + '_data'] ?? cloneDeep(vid_4aknukyy93_props.currentRow[sub].dataList);
  Object.keys(vid_4aknukyy93_props.currentRow).forEach((key) => {
  const [subForm, subKey] = key.split('_$_');
  if (subKey && subForm === sub) {
  subData[vid_4aknukyy93_props.currentRow['__SUB_INDEX']][subKey] = vid_4aknukyy93_props.currentRow[key]
  }
  });
  vid_4aknukyy93_props.currentRow[sub + '_data'] = subData;
  });
  vid_4aknukyy93_props.editRowSaveLoading[index] = true;
  // 行编辑保存成功，更新表格中的数据
  vid_4aknukyy93_options_raw.value.splice(index, 1, vid_4aknukyy93_props.editRecordMap[index]);
  // 将当前行的编辑数据删除
  delete vid_4aknukyy93_props.editRecordMap[index];
  vid_4aknukyy93_props.editRowSaveLoading[index] = false;
  }, 500)
  /**
  * 处理元素 表格 的 change 事件
  */
  let handle_vid_4aknukyy93_change = throttle(async (...params) => {
  // 处理分页器相关数据
  const [pagination, filters, sorter] = params;
  const { current, pageSize } = pagination;
  vid_4aknukyy93_props.rt_tableConfig.pagination.current = current;
  vid_4aknukyy93_props.rt_tableConfig.pagination.pageSize = pageSize;
  // 处理排序相关数据
  const { field, order } = sorter;
  const sorterList = [...vid_4aknukyy93_props.rowMergeSort];
  let sorterValue = {};
  if (order === 'descend') {
  sorterValue = { order: field, direction: 'DESC' }
  } else if (order === 'ascend') {
  sorterValue = { order: field, direction: 'ASC' }
  }
  sorterList.push(sorterValue);
  vid_4aknukyy93_props.systemSort = sorterList;
  vid_4aknukyy93_props.sorter = sorterValue;
  }, 500)
  /**
  * 处理元素 表格 的 change 事件
  */
  let handle_vid_hif07bxzyz_change = throttle(async (...params) => {
  // 处理分页器相关数据
  const [pagination, filters, sorter] = params;
  const { current, pageSize } = pagination;
  vid_hif07bxzyz_props.rt_tableConfig.pagination.current = current;
  vid_hif07bxzyz_props.rt_tableConfig.pagination.pageSize = pageSize;
  // 处理排序相关数据
  const { field, order } = sorter;
  const sorterList = [...vid_hif07bxzyz_props.rowMergeSort];
  let sorterValue = {};
  if (order === 'descend') {
  sorterValue = { order: field, direction: 'DESC' }
  } else if (order === 'ascend') {
  sorterValue = { order: field, direction: 'ASC' }
  }
  sorterList.push(sorterValue);
  vid_hif07bxzyz_props.systemSort = sorterList;
  vid_hif07bxzyz_props.sorter = sorterValue;
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_d5a6pbkfez_click = throttle(async (...params) => {
  vid_n1j6n0uivd_props.visible = false;
  customFunction_rm58ow5j3s();
  // 这里组件可能还未初始化， 这里使用可选链的形式进行函数触发
  try {
  await vid_1bj87coo4d_ref.value?.resetFields();
  } catch (error) { console.log(error);}
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_9etdrdv8wi_click = throttle(async (...params) => {
  await dataConnector_conn_3umm8f2coy()
  response_oc8lvxk5n0()
  vid_n1j6n0uivd_props.visible = false;
  await dataConnector_conn_ceukezuoe3()
  customFunction_rm58ow5j3s();
  // 这里组件可能还未初始化， 这里使用可选链的形式进行函数触发
  try {
  await vid_1bj87coo4d_ref.value?.resetFields();
  } catch (error) { console.log(error);}
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_5eegv899jk_click = throttle(async (...params) => {
  await dataConnector_conn_ceukezuoe3()
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_n89j4a22ka_click = throttle(async (...params) => {
  // 这里组件可能还未初始化， 这里使用可选链的形式进行函数触发
  try {
  await vid_vtapwwcetg_ref.value?.resetFields();
  } catch (error) { console.log(error);}
  await dataConnector_conn_ceukezuoe3()
  }, 500)
  /**
  * 处理元素 日期 的 change 事件
  */
  let handle_vid_wq6n01x43t_change = throttle(async (...params) => {
  customFunction_z1uz2x63e0();
  }, 500)
  /**
  * 处理元素 按钮 的 click 事件
  */
  let handle_vid_8oidj0rciq_click = throttle(async (...params) => {
  vid_pg2n4111dr_props.visible = true;
  await dataConnector_conn_z3s98wbt0v()
  }, 500)
  /**
  * 处理元素 表格 的 clickBtn_aipicpxpd9 事件
  */
  let handle_vid_i6ohyx4zer_clickBtn_aipicpxpd9 = throttle(async (...params) => {
  // 存储表格当前行数据
  const [record] = params;
  vid_i6ohyx4zer_props.currentRow = record;
  vid_f6xuw7ttyl_props.visible = true;
  await dataConnector_conn_01rt3ve6ay()
  }, 500)
  /**
  * 处理元素 表格 的 change 事件
  */
  let handle_vid_i6ohyx4zer_change = throttle(async (...params) => {
  // 处理分页器相关数据
  const [pagination, filters, sorter] = params;
  const { current, pageSize } = pagination;
  vid_i6ohyx4zer_props.rt_tableConfig.pagination.current = current;
  vid_i6ohyx4zer_props.rt_tableConfig.pagination.pageSize = pageSize;
  // 处理排序相关数据
  const { field, order } = sorter;
  const sorterList = [...vid_i6ohyx4zer_props.rowMergeSort];
  let sorterValue = {};
  if (order === 'descend') {
  sorterValue = { order: field, direction: 'DESC' }
  } else if (order === 'ascend') {
  sorterValue = { order: field, direction: 'ASC' }
  }
  sorterList.push(sorterValue);
  vid_i6ohyx4zer_props.systemSort = sorterList;
  vid_i6ohyx4zer_props.sorter = sorterValue;
  await dataConnector_conn_ceukezuoe3()
  }, 500)
  /**
  * 处理元素 表格 的 clickBtn_gk27sbe9jb 事件
  */
  let handle_vid_i6ohyx4zer_clickBtn_gk27sbe9jb = throttle(async (...params) => {
  // 存储表格当前行数据
  const [record] = params;
  vid_i6ohyx4zer_props.currentRow = record;
  }, 500)
  /**
  * 处理元素 表格 的 clickBtn_hvurnhdmz7 事件
  */
  let handle_vid_i6ohyx4zer_clickBtn_hvurnhdmz7 = throttle(async (...params) => {
  // 存储表格当前行数据
  const [record] = params;
  vid_i6ohyx4zer_props.currentRow = record;
  }, 500)
  /**
  * 处理元素 表格 的 clickBtn_74jn8w1jiu 事件
  */
  let handle_vid_i6ohyx4zer_clickBtn_74jn8w1jiu = throttle(async (...params) => {
  // 存储表格当前行数据
  const [record] = params;
  vid_i6ohyx4zer_props.currentRow = record;
  }, 500)
  /**
  * 处理元素 表格 的 clickBtn_pce2dau3m5 事件
  */
  let handle_vid_i6ohyx4zer_clickBtn_pce2dau3m5 = throttle(async (...params) => {
  // 存储表格当前行数据
  const [record] = params;
  vid_i6ohyx4zer_props.currentRow = record;
  }, 500)
  /* ========================== 组件事件处理方法 ========================== */


  /* -------------------------- 生命周期 -------------------------- */
  // 用于参数变更后重新执行自定义指令
      const queryUpdateFlag = ref(0);
      onMounted(() => { ;dataConnector_conn_ceukezuoe3()

    });

    onUnmounted(() => {
      // 销毁定时器
      setTimeOutList.forEach(({ repeat, timer }) => {
        repeat ?  clearInterval(timer): clearTimeout(timer);
      });
    });

  /* ========================== 生命周期 ========================== */


  /* -------------------------- 数据关联处理 -------------------------- */

      // 处理 全局提示_提交失败 全局消息
        immediateWatch(
            () => vid_wx1bzo1ky6_props.show,
            () => {
                if (vid_wx1bzo1ky6_props.show) {
                    message[vid_wx1bzo1ky6_props.type](vid_wx1bzo1ky6_props.content, vid_wx1bzo1ky6_props.duration, () => {
                        vid_wx1bzo1ky6_props.show = false
                    })
                }
            }
        )
  // 处理 全局提示_提交成功 全局消息
        immediateWatch(
            () => vid_72tiek3uyj_props.show,
            () => {
                if (vid_72tiek3uyj_props.show) {
                    message[vid_72tiek3uyj_props.type](vid_72tiek3uyj_props.content, vid_72tiek3uyj_props.duration, () => {
                        vid_72tiek3uyj_props.show = false
                    })
                }
            }
        )



  /* -------------------------- 表单数据同步 -------------------------- */
  /* ========================== 表单数据同步 ========================== */

  /* ========================== 数据关联处理 ========================== */


  /* -------------------------- 不同组件自定义的处理逻辑 -------------------------- */
  onMounted(() => {
    const rawColumnList = []
    traversalTreeStructure(vid_ksftppjyqy_props.columnList, (node) => {
      if (node.type === 'column') {
        rawColumnList.push(node)
      }
    });
    
    // 获取缓存的表格列宽度，处理列宽信息
    UserTableRecords.getTableRecords(localGet('al__UID')).then((res) => {
      const columnWidthMap = res['vid_ksftppjyqy'] ?? {};
      rawColumnList.map((column) => {
        if(columnWidthMap[column.dataIndex]) {
          column.width = columnWidthMap[column.dataIndex]
        }
      })
    });
    
    vid_ksftppjyqy_props.rawColumnList = rawColumnList;
  })
  // 生成表格列：相同分组的数据需要合并单元格
  const vid_ksftppjyqy_columns = computed(() => {
    // 需要合并单元格的列
    const groupKeys = [];

    // 将表头配置按照groupTitle字段进行分组，以实现多级表头
    const columnList = [...vid_ksftppjyqy_props.columnList];
    function formatColumns(columns) {
      columns.forEach(item => {
        const { dataIndex, contentAlign, children, customCellStyle } = item;
        // 如果当前列是分组列，则递归处理它的子列，当前列本身不作处理
        if (!dataIndex && children && children.length) {
          formatColumns(children);
          return;
        }

        const groupIndex = groupKeys.findIndex(item => item === dataIndex);
        // 如果当前字段属于分组字段，则给它添加合并单元格的配置，否则直接返回
        if (groupIndex === -1) {
          item.customCell = (record, index) => {
            return { style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        } else {
          item.customCell = (record, index) => {
            const rowGroupKeys = groupKeys.slice(0, groupIndex + 1);
            const rowSpanList = generateRowSpanList(vid_ksftppjyqy_options.value(), rowGroupKeys,vid_ksftppjyqy_props.editRecordMap);
            return { rowSpan: rowSpanList[index], style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        }
      })
    }

    // 格式化column：增加合并单元格的配置，以及自定义样式
    formatColumns(columnList);

    return columnList;
  });


    // 表格分页器信息：将总条数信息加到基础分页信息中
    const vid_ksftppjyqy_pagination = computed(() => {
      const { totalNumber, rt_tableConfig } = vid_ksftppjyqy_props;
      const {
        enable = true,
        current= 1,
        pageSize= 10,
        showSizeChanger= false,
        pageSizeOptions= '10,20,30,40',
        showTotal= false,
        showQuickJumper= false,
        simple= false,
        hideOnSinglePage= false,
      } = rt_tableConfig.pagination ?? {};
      const { size = 'default', layout='bottomRight' } = rt_tableConfig?.style?.paginationStyle || {}
      let info = {};
      if(enable) {
        info = {
          total: totalNumber || 0,
          pageSize,
          size,
          simple,
          current,
          showSizeChanger,
          pageSizeOptions: pageSizeOptions.split(','),
          showQuickJumper,
          hideOnSinglePage,
          position: [layout],
        }
        if(showTotal) {
          info.showTotal = (total, range) => `共${total}个项目，第${current}/${Math.ceil(total / pageSize)}页`
        }
        return info;
      }
      return false;
    })


        // 补充一个watch，用于监听删除最后一页最后一条数据的情况，然后重新加载数据
        watch(() => dataConnector_conn_01rt3ve6ay_response?.value?.data?.taskDescriptionDtoList, (newValue) => {
          const current = vid_ksftppjyqy_props.rt_tableConfig.pagination.current;
          if (!newValue?.length && current > 1) {
            vid_ksftppjyqy_props.rt_tableConfig.pagination.current = current - 1;
            dataConnector_conn_01rt3ve6ay();
          }
        });
  onMounted(() => {
    const rawColumnList = []
    traversalTreeStructure(vid_4aknukyy93_props.columnList, (node) => {
      if (node.type === 'column') {
        rawColumnList.push(node)
      }
    });
    
    // 获取缓存的表格列宽度，处理列宽信息
    UserTableRecords.getTableRecords(localGet('al__UID')).then((res) => {
      const columnWidthMap = res['vid_4aknukyy93'] ?? {};
      rawColumnList.map((column) => {
        if(columnWidthMap[column.dataIndex]) {
          column.width = columnWidthMap[column.dataIndex]
        }
      })
    });
    
    vid_4aknukyy93_props.rawColumnList = rawColumnList;
  })
  // 生成表格列：相同分组的数据需要合并单元格
  const vid_4aknukyy93_columns = computed(() => {
    // 需要合并单元格的列
    const groupKeys = [];

    // 将表头配置按照groupTitle字段进行分组，以实现多级表头
    const columnList = [...vid_4aknukyy93_props.columnList];
    function formatColumns(columns) {
      columns.forEach(item => {
        const { dataIndex, contentAlign, children, customCellStyle } = item;
        // 如果当前列是分组列，则递归处理它的子列，当前列本身不作处理
        if (!dataIndex && children && children.length) {
          formatColumns(children);
          return;
        }

        const groupIndex = groupKeys.findIndex(item => item === dataIndex);
        // 如果当前字段属于分组字段，则给它添加合并单元格的配置，否则直接返回
        if (groupIndex === -1) {
          item.customCell = (record, index) => {
            return { style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        } else {
          item.customCell = (record, index) => {
            const rowGroupKeys = groupKeys.slice(0, groupIndex + 1);
            const rowSpanList = generateRowSpanList(vid_4aknukyy93_options.value(), rowGroupKeys,vid_4aknukyy93_props.editRecordMap);
            return { rowSpan: rowSpanList[index], style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        }
      })
    }

    // 格式化column：增加合并单元格的配置，以及自定义样式
    formatColumns(columnList);

    return columnList;
  });


    // 表格分页器信息：将总条数信息加到基础分页信息中
    const vid_4aknukyy93_pagination = computed(() => {
      const { totalNumber, rt_tableConfig } = vid_4aknukyy93_props;
      const {
        enable = true,
        current= 1,
        pageSize= 10,
        showSizeChanger= false,
        pageSizeOptions= '10,20,30,40',
        showTotal= false,
        showQuickJumper= false,
        simple= false,
        hideOnSinglePage= false,
      } = rt_tableConfig.pagination ?? {};
      const { size = 'default', layout='bottomRight' } = rt_tableConfig?.style?.paginationStyle || {}
      let info = {};
      if(enable) {
        info = {
          total: totalNumber || 0,
          pageSize,
          size,
          simple,
          current,
          showSizeChanger,
          pageSizeOptions: pageSizeOptions.split(','),
          showQuickJumper,
          hideOnSinglePage,
          position: [layout],
        }
        if(showTotal) {
          info.showTotal = (total, range) => `共${total}个项目，第${current}/${Math.ceil(total / pageSize)}页`
        }
        return info;
      }
      return false;
    })
  onMounted(() => {
    const rawColumnList = []
    traversalTreeStructure(vid_hif07bxzyz_props.columnList, (node) => {
      if (node.type === 'column') {
        rawColumnList.push(node)
      }
    });
    
    // 获取缓存的表格列宽度，处理列宽信息
    UserTableRecords.getTableRecords(localGet('al__UID')).then((res) => {
      const columnWidthMap = res['vid_hif07bxzyz'] ?? {};
      rawColumnList.map((column) => {
        if(columnWidthMap[column.dataIndex]) {
          column.width = columnWidthMap[column.dataIndex]
        }
      })
    });
    
    vid_hif07bxzyz_props.rawColumnList = rawColumnList;
  })
  // 生成表格列：相同分组的数据需要合并单元格
  const vid_hif07bxzyz_columns = computed(() => {
    // 需要合并单元格的列
    const groupKeys = [];

    // 将表头配置按照groupTitle字段进行分组，以实现多级表头
    const columnList = [...vid_hif07bxzyz_props.columnList];
    function formatColumns(columns) {
      columns.forEach(item => {
        const { dataIndex, contentAlign, children, customCellStyle } = item;
        // 如果当前列是分组列，则递归处理它的子列，当前列本身不作处理
        if (!dataIndex && children && children.length) {
          formatColumns(children);
          return;
        }

        const groupIndex = groupKeys.findIndex(item => item === dataIndex);
        // 如果当前字段属于分组字段，则给它添加合并单元格的配置，否则直接返回
        if (groupIndex === -1) {
          item.customCell = (record, index) => {
            return { style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        } else {
          item.customCell = (record, index) => {
            const rowGroupKeys = groupKeys.slice(0, groupIndex + 1);
            const rowSpanList = generateRowSpanList(vid_hif07bxzyz_options.value(), rowGroupKeys,vid_hif07bxzyz_props.editRecordMap);
            return { rowSpan: rowSpanList[index], style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        }
      })
    }

    // 格式化column：增加合并单元格的配置，以及自定义样式
    formatColumns(columnList);

    return columnList;
  });


    // 表格分页器信息：将总条数信息加到基础分页信息中
    const vid_hif07bxzyz_pagination = computed(() => {
      const { totalNumber, rt_tableConfig } = vid_hif07bxzyz_props;
      const {
        enable = true,
        current= 1,
        pageSize= 10,
        showSizeChanger= false,
        pageSizeOptions= '10,20,30,40',
        showTotal= false,
        showQuickJumper= false,
        simple= false,
        hideOnSinglePage= false,
      } = rt_tableConfig.pagination ?? {};
      const { size = 'default', layout='bottomRight' } = rt_tableConfig?.style?.paginationStyle || {}
      let info = {};
      if(enable) {
        info = {
          total: totalNumber || 0,
          pageSize,
          size,
          simple,
          current,
          showSizeChanger,
          pageSizeOptions: pageSizeOptions.split(','),
          showQuickJumper,
          hideOnSinglePage,
          position: [layout],
        }
        if(showTotal) {
          info.showTotal = (total, range) => `共${total}个项目，第${current}/${Math.ceil(total / pageSize)}页`
        }
        return info;
      }
      return false;
    })


        // 补充一个watch，用于监听删除最后一页最后一条数据的情况，然后重新加载数据
        watch(() => dataConnector_conn_jtwoa82pzq_response?.value?.data?.ppmGenOtherWorkDetailDtoList, (newValue) => {
          const current = vid_hif07bxzyz_props.rt_tableConfig.pagination.current;
          if (!newValue?.length && current > 1) {
            vid_hif07bxzyz_props.rt_tableConfig.pagination.current = current - 1;
            dataConnector_conn_jtwoa82pzq();
          }
        });
  onMounted(() => {
    const rawColumnList = []
    traversalTreeStructure(vid_i6ohyx4zer_props.columnList, (node) => {
      if (node.type === 'column') {
        rawColumnList.push(node)
      }
    });
    
    // 获取缓存的表格列宽度，处理列宽信息
    UserTableRecords.getTableRecords(localGet('al__UID')).then((res) => {
      const columnWidthMap = res['vid_i6ohyx4zer'] ?? {};
      rawColumnList.map((column) => {
        if(columnWidthMap[column.dataIndex]) {
          column.width = columnWidthMap[column.dataIndex]
        }
      })
    });
    
    vid_i6ohyx4zer_props.rawColumnList = rawColumnList;
  })
  // 生成表格列：相同分组的数据需要合并单元格
  const vid_i6ohyx4zer_columns = computed(() => {
    // 需要合并单元格的列
    const groupKeys = ['generateMonth', 'projectName'];

    // 将表头配置按照groupTitle字段进行分组，以实现多级表头
    const columnList = [...vid_i6ohyx4zer_props.columnList];
    function formatColumns(columns) {
      columns.forEach(item => {
        const { dataIndex, contentAlign, children, customCellStyle } = item;
        // 如果当前列是分组列，则递归处理它的子列，当前列本身不作处理
        if (!dataIndex && children && children.length) {
          formatColumns(children);
          return;
        }

        const groupIndex = groupKeys.findIndex(item => item === dataIndex);
        // 如果当前字段属于分组字段，则给它添加合并单元格的配置，否则直接返回
        if (groupIndex === -1) {
          item.customCell = (record, index) => {
            return { style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        } else {
          item.customCell = (record, index) => {
            const rowGroupKeys = groupKeys.slice(0, groupIndex + 1);
            const rowSpanList = generateRowSpanList(vid_i6ohyx4zer_options.value(), rowGroupKeys,vid_i6ohyx4zer_props.editRecordMap);
            return { rowSpan: rowSpanList[index], style: { 'text-align': contentAlign, ...(customCellStyle || {}) } };
          };
        }
      })
    }

    // 格式化column：增加合并单元格的配置，以及自定义样式
    formatColumns(columnList);

    return columnList;
  });


    // 表格分页器信息：将总条数信息加到基础分页信息中
    const vid_i6ohyx4zer_pagination = computed(() => {
      const { totalNumber, rt_tableConfig } = vid_i6ohyx4zer_props;
      const {
        enable = true,
        current= 1,
        pageSize= 10,
        showSizeChanger= false,
        pageSizeOptions= '10,20,30,40',
        showTotal= false,
        showQuickJumper= false,
        simple= false,
        hideOnSinglePage= false,
      } = rt_tableConfig.pagination ?? {};
      const { size = 'default', layout='bottomRight' } = rt_tableConfig?.style?.paginationStyle || {}
      let info = {};
      if(enable) {
        info = {
          total: totalNumber || 0,
          pageSize,
          size,
          simple,
          current,
          showSizeChanger,
          pageSizeOptions: pageSizeOptions.split(','),
          showQuickJumper,
          hideOnSinglePage,
          position: [layout],
        }
        if(showTotal) {
          info.showTotal = (total, range) => `共${total}个项目，第${current}/${Math.ceil(total / pageSize)}页`
        }
        return info;
      }
      return false;
    })


        // 补充一个watch，用于监听删除最后一页最后一条数据的情况，然后重新加载数据
        watch(() => dataConnector_conn_ceukezuoe3_response?.value?.data?.ppmGenProjectWorkDetailDtoList, (newValue) => {
          const current = vid_i6ohyx4zer_props.rt_tableConfig.pagination.current;
          if (!newValue?.length && current > 1) {
            vid_i6ohyx4zer_props.rt_tableConfig.pagination.current = current - 1;
            dataConnector_conn_ceukezuoe3();
          }
        });
  /**
   * 生成分组字段合并单元格的配置：返回值为一个数字数组，数组里面每一项即为该字段当前行的rowSpan配置
   * @param {Array} 表格中的数据
   * @param {Array} 当前分组字段的列表，注：为了保证优先级低的字段合并后是优先级高的字段合并后的子集，需要把比该字段优先级高的分组字段按顺序放在该字段前面；例如：所有分组字段列表为['grade', 'age', 'score']，要生成age字段的合并单元格配置，则该参数需要传['grade', 'age']
   * @returns {Array} 该字段合并单元格的rowSpan配置，例：[1, 1, 2, 0, 1]
   */
  function generateRowSpanList(dataSource, groupKeys,editRecordMap) {
    if (!dataSource || !dataSource.length) {
      return [];
    }

    const rowSpanList = [];

    // 判断单元格是否需要合并的临时值：使用表格数据最后一行进行初始化（表格数据的遍历是倒序进行的）
    let tempValue = getGroupValue(dataSource[dataSource.length - 1], groupKeys);
    // 记录需要合并单元格的数量
    let tempValueCount = 0;

    // 倒序遍历数组，以保证使用最前面一条数据合并单元格
    for (let index = dataSource.length - 1; index >= 0; index--) {
      rowSpanList[index] = 0;
      const groupValue = getGroupValue(dataSource[index], groupKeys);
      // 如果当前行的分组数据跟上一行一致，则将标记数量加一；否则将标记数量的当前值赋给上一条数据，并重置临时值和标记数量
      if(editRecordMap && editRecordMap[index]){ //如果当前行是编辑行
        rowSpanList[index + 1] = tempValueCount;
        tempValue = "";
        tempValueCount=1;
      }
      else if (groupValue === tempValue) {
        tempValueCount++;
      } else {
        rowSpanList[index + 1] = tempValueCount;
        tempValue = groupValue;
        tempValueCount = 1;
      }

      // 遍历到最后一行，将当前的标记数量赋给当前行
      if (index === 0) {
        rowSpanList[index] = tempValueCount;
      }
    }

    return rowSpanList;
  }

  /**
   * 根据分组字段列表生成当前数据行的分组值
   * @param {Object} 当前数据行
   * @param {Array} 分组字段列表
   * @returns {String} 拼装的当前数据行的分组值，例：record为{ age: 7, grade: '一年级', name: '小赵' }，groupKeys为['grade', 'age']，则拼装后的返回值为'一年级__$__7'
   */
  function getGroupValue(record, groupKeys) {
    const groupValueList = [];
    groupKeys.forEach(groupKey => {
      let val = record[groupKey]
      if (isArray(val)) {
        val = record[groupKey + '_labels']
      } else if (isObject(val)) {
        console.warn('警告表格列数据为object，可能导致行合并异常，列key为：'+ groupKey,val)
      }
      groupValueList.push(`${val}`);
    });
    return groupValueList.join('__$__');
  }

  /**
   * 将列表数据转换成树状数据
   * @param {Array} 原始的列表数据
   * @param {String|Number} 列表数据的唯一key
   * @param {String|Number} 列表数据转成树时的父级id
  */
  function convertListToTree(list, key, parentKey) {
    const clonedList = cloneDeep(list || []);

    // 遍历列表数据，生成树节点的map：key为列表数据的唯一key，value为列表当前行的数据
    const treeNodeMap = {};
    clonedList.forEach(item => {
      treeNodeMap[item[key]] = item;
    });

    const treeDataList = [];
    clonedList.forEach(item => {
      // 如果当前行数据的父级id不在树节点的map中，则当前数据为根节点数据，将其加入最终树形数据的列表；否则将其放入其父节点数据的children中
      if (!treeNodeMap[item[parentKey]]) {
        treeDataList.push(item);
      } else {
        if (!treeNodeMap[item[parentKey]].children) {
          treeNodeMap[item[parentKey]].children = [];
        }
        treeNodeMap[item[parentKey]].children.push(item);
      }
    });

    return treeDataList;
  }

  /**
   * 表格列宽伸缩处理，使用indexedDB缓存伸缩后的列宽度
   */
  const handleResizeColumn = (w, col, vid) => {
    col.width = w;
    
    UserTableRecords.saveTableRecords(col, localGet('al__UID'), vid)
    
  }
  /* ========================== 不同组件自定义的处理逻辑 ========================== */


  // ================================定制化逻辑========================================
  function getMonthForDisplay() {
    const today = new Date();
    const currentYear = today.getFullYear();
    const currentMonth = today.getMonth() + 1;
    const currentDate = today.getDate();

    let targetYear, targetMonth;

    if (currentDate <= 10) {
      // 如果当前日期是这个月的10日之前，获取上个月的年份和月份
      if (currentMonth === 1) {
        targetYear = currentYear - 1;
        targetMonth = 12;
      } else {
        targetYear = currentYear;
        targetMonth = currentMonth - 1;
      }
    } else {
      // 如果当前日期是10日或者10日之后，获取当前月份和当前年份
      targetYear = currentYear;
      targetMonth = currentMonth;
    }

    // 格式化为yyyy-mm
    return `${targetYear}-${String(targetMonth).padStart(2, '0')}`;
  }
  //let nowDate = getMonthForDisplay()
  g_xpqsgvqqbn.p_z40uhsrvar = getMonthForDisplay()
</script>
<style lang="less" scoped>
  .page_root {
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color:#F0F2F5;
  }
  .page_root :deep(.@{ant-prefix}-spin-nested-loading),
  .page_root :deep(.@{ant-prefix}-spin-container)
   {
      height: 100%;
  }
  .page_root :deep(.@{ant-prefix}-spin-container .@{ant-prefix}-table-wrapper)
   {
      display: flex;
      flex-flow: column nowrap;
      justify-content: flex-start;
  }
  .page_root :deep(.@{ant-prefix}-table)
   {
    flex: auto;
    overflow: auto;
  }
  .table-moreBtn_down {
    overflow: hidden; white-space: nowrap; text-overflow: ellipsis; width: 100px;
  }

  .table-moreBtn_menu :deep(.table-moreBtn_menu-item):hover {
    background: #ebf1ff;
  }

  /*  表格树结构样式处理，展开按钮层级增加*/
  :deep(.@{ant-prefix}-table-row-expand-icon) {
    z-index: 1;
  }
  /*  表格树结构 由于每个表格项采用自定义组件，使用绝对定位布局，开启树结构导致显示异常，暂时使用层级定位位置 */
  :deep(.@{ant-prefix}-table-row-level-1 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 15px !important;
    width: calc(100% - 15px);
  }
  :deep(.@{ant-prefix}-table-row-level-2 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 30px !important;
    width: calc(100% - 30px);
  }
  :deep(.@{ant-prefix}-table-row-level-3 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 45px !important;
    width: calc(100% - 45px);
  }
  :deep(.@{ant-prefix}-table-row-level-4 .@{ant-prefix}-table-cell-with-append .cell-wrapper-left) {
    left: 60px !important;
    width: calc(100% - 60px);
  }

  /* 穿梭框改变默认样式，为根据组件样式控制左右栏宽度。 */
  :deep(.@{ant-prefix}-transfer-list)
   {
      height: 100%;
      width: 50%;
  }
  .vid_ye231q48cj{
      margin-bottom:24px
  }
  .vid_xr0rzps964{
      display:flex;
      justify-content:center;
      flex-wrap:undefined;
      padding-top:24px;
      border-top-style:solid;
      border-top-width:1px;
      border-top-color:#D9D9D9
  }
  .vid_13rtsmyllx{
      margin-left:16px;
      background-color:#3875FF;
      border-style:solid;
      border-width:1px;
      border-color:#3875FF
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-thead) > tr {
      height: 40px;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-thead) > tr > th {
    background: #3875FF;
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 600;
    color: #FFFFFF;
    border-bottom:1px solid #EBEBEB;
    padding: 8px 16px;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr:not(:last-child) > th {
    border-bottom:1px solid #EBEBEB;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th {
    border-right:1px solid #EBEBEB;
  }
  /* 将表格自带的左边框取消，方便设置表头边框颜色和内容边框颜色 */
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container {
    border-left: none;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th[colstart='0']:first-child {
    border-left:1px solid #EBEBEB;
  }
  /* 开启粘性表头后，表格结构会发生变化 需另外处理 */
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-header table {
    border-top:1px solid #EBEBEB;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container > .@{ant-prefix}-table-content > table {
    border-top:1px solid #EBEBEB;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-thead) > tr > th:not(:last-child):not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan])::before {
      background: #EBEBEB;
      width: 1px;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-cell-scrollbar) {
      box-shadow: none;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-tbody) tr {
    height: 40px;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-tbody) tr > td {
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 400;
    color: #262626;
    border-bottom:1px solid #EBEBEB;
    padding: 0 16px;
    word-break: break-all;
    .cell-wrapper {
      padding: 0 16px;
    }
  }

  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-tbody) tr > td .cell-wrapper {
    padding: 0 16px;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
    padding: 0;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn {
    padding: 0 30px 0 0;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn:last-child {
    padding: 0;
  }
  .vid_ksftppjyqy :deep(.table-striped-odd) td {
    background-color: #FFFFFF;
  }
  .vid_ksftppjyqy :deep(.table-striped-even) td {
    background-color: #F8FAFC;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td {
    border-right:1px solid #EBEBEB;
  }
  .vid_ksftppjyqy :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td:first-child {
    border-left:1px solid #EBEBEB;
  }
  .vid_ksftppjyqy{
      width:100%
  }
  .vid_ksftppjyqy:active{
      width:100%
  }
  .vid_ksftppjyqy:focus{
      width:100%
  }
  .vid_ksftppjyqy:hover{
      width:100%
  }


  .vid_8ua7p6zegw{
      height:800px;
      overflow-y:auto;
      display:block
  }
  .vid_1bj87coo4d{
      width:100%;
      margin-bottom:16px
  }
  .vid_nj8j5fa33d{
      padding-top:12px;
      padding-bottom:12px
  }
  .vid_ex78826yps{
      margin-top:0px;
      margin-bottom:0px
  }
  .vid_7t34a307dt :deep(input) {
        cursor: undefined;
      }
  .vid_7t34a307dt{
      width:100%
  }
  .vid_rsq48ty6fb{
      margin-top:0px;
      margin-right:16px;
      margin-bottom:0px
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-thead) > tr {
      height: 40px;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-thead) > tr > th {
    background: #3875FF;
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 600;
    color: #FFFFFF;
    border-bottom:1px solid #D9D9D9;
    padding: 8px 16px;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr:not(:last-child) > th {
    border-bottom:1px solid #D9D9D9;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th {
    border-right:1px solid #D9D9D9;
  }
  /* 将表格自带的左边框取消，方便设置表头边框颜色和内容边框颜色 */
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container {
    border-left: none;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th[colstart='0']:first-child {
    border-left:1px solid #D9D9D9;
  }
  /* 开启粘性表头后，表格结构会发生变化 需另外处理 */
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-header table {
    border-top:1px solid #D9D9D9;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container > .@{ant-prefix}-table-content > table {
    border-top:1px solid #D9D9D9;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-thead) > tr > th:not(:last-child):not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan])::before {
      background: #D9D9D9;
      width: 1px;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-cell-scrollbar) {
      box-shadow: none;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-tbody) tr {
    height: 40px;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-tbody) tr > td {
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 400;
    color: #262626;
    border-bottom:1px solid #D9D9D9;
    padding: 0 16px;
    word-break: break-all;
    .cell-wrapper {
      padding: 0 16px;
    }
  }

  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-tbody) tr > td .cell-wrapper {
    padding: 0 16px;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
    padding: 0;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn {
    padding: 0 30px 0 0;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn:last-child {
    padding: 0;
  }
  .vid_4aknukyy93 :deep(.table-striped-odd) td {
    background-color: #FFFFFF;
  }
  .vid_4aknukyy93 :deep(.table-striped-even) td {
    background-color: #F8FAFC;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td {
    border-right:1px solid #D9D9D9;
  }
  .vid_4aknukyy93 :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td:first-child {
    border-left:1px solid #D9D9D9;
  }
  .vid_4aknukyy93{
      width:100%;
      margin-bottom:16px
  }
  .vid_4aknukyy93:active{
      width:100%
  }
  .vid_4aknukyy93:focus{
      width:100%
  }
  .vid_4aknukyy93:hover{
      width:100%
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-thead) > tr {
      height: 40px;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-thead) > tr > th {
    background: #3875FF;
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 600;
    color: #FFFFFF;
    border-bottom:1px solid #D9D9D9;
    padding: 8px 16px;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr:not(:last-child) > th {
    border-bottom:1px solid #D9D9D9;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th {
    border-right:1px solid #D9D9D9;
  }
  /* 将表格自带的左边框取消，方便设置表头边框颜色和内容边框颜色 */
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container {
    border-left: none;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th[colstart='0']:first-child {
    border-left:1px solid #D9D9D9;
  }
  /* 开启粘性表头后，表格结构会发生变化 需另外处理 */
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-header table {
    border-top:1px solid #D9D9D9;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container > .@{ant-prefix}-table-content > table {
    border-top:1px solid #D9D9D9;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-thead) > tr > th:not(:last-child):not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan])::before {
      background: #D9D9D9;
      width: 1px;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-cell-scrollbar) {
      box-shadow: none;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-tbody) tr {
    height: 40px;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-tbody) tr > td {
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 400;
    color: #262626;
    border-bottom:1px solid #D9D9D9;
    padding: 0 16px;
    word-break: break-all;
    .cell-wrapper {
      padding: 0 16px;
    }
  }

  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-tbody) tr > td .cell-wrapper {
    padding: 0 16px;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
    padding: 0;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn {
    padding: 0 30px 0 0;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn:last-child {
    padding: 0;
  }
  .vid_hif07bxzyz :deep(.table-striped-odd) td {
    background-color: #FFFFFF;
  }
  .vid_hif07bxzyz :deep(.table-striped-even) td {
    background-color: #F8FAFC;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td {
    border-right:1px solid #D9D9D9;
  }
  .vid_hif07bxzyz :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td:first-child {
    border-left:1px solid #D9D9D9;
  }
  .vid_hif07bxzyz{
      width:100%;
      margin-bottom:16px
  }
  .vid_hif07bxzyz:active{
      width:100%
  }
  .vid_hif07bxzyz:focus{
      width:100%
  }
  .vid_hif07bxzyz:hover{
      width:100%
  }
  .vid_76203tnvq2{
      display:block;
      margin-bottom:16px;
      border-color:#1890FF
  }
  .vid_pmi3xs7o8s{
      padding-left:8px;
      font-weight:600;
      font-size:16px;
      line-height:16px;
      box-shadow:0px 0px 0px 0px ;
      border-left-style:solid;
      border-left-width:4px;
      border-left-color:#3875FF
  }
  .vid_wp292cf9yz{
      margin-top:8px
  }
  .vid_3txe6xik0g{
      display:flex;
      justify-content:center;
      flex-wrap:undefined;
      padding-top:16px;
      border-color:#D9D9D9;
      border-top-style:solid;
      border-top-width:1px;
      border-top-color:#D9D9D9
  }
  .vid_d5a6pbkfez{
      margin-right:16px
  }
  .vid_9etdrdv8wi{
      background-color:#3875FF;
      border-style:solid;
      border-width:1px;
      border-color:#3875FF
  }
  .vid_yjpe38q3ew{
      width:100%;
      height:100%;
      overflow-y:auto;
      display:block;
      background-color:#FFFFFF
  }
  .vid_vtapwwcetg{
      width:100%;
      padding-top:16px;
      padding-right:24px;
      padding-bottom:16px;
      padding-left:24px;
      background-color:#FFFFFF;
      box-shadow:0px 0px 0px 0px
  }
  .vid_9mrs3g388z{
      width:100%
  }
  .vid_5eegv899jk{
      margin-right:8px;
      margin-left:24px;
      background-color:#3875FF
  }
  .vid_0wxx6n1zq5{
      margin-bottom:0px
  }
  .vid_wq6n01x43t :deep(input) {
        cursor: undefined;
      }
  .vid_wq6n01x43t{
      width:100%
  }
  .vid_crx5tfx4we{
      height:16px;
      background-color:#F0F2F5
  }
  .vid_twf3qkdyjm{
      width:100%;
      overflow-x:auto;
      overflow-y:auto;
      display:block;
      flex-grow:1;
      flex-shrink:1;
      padding-top:16px;
      padding-right:24px;
      padding-bottom:16px;
      padding-left:24px;
      background-color:#FFFFFF;
      box-shadow:0px 0px 0px 0px
  }
  .vid_cioqymnx0i{
      width:100%;
      display:flex;
      align-items:center;
      flex-wrap:undefined;
      margin-bottom:16px
  }
  .vid_b9effh4pye{
      display:flex;
      flex-direction:row;
      align-items:center;
      justify-content:flex-end;
      flex-wrap:undefined
  }
  .vid_wli2sq1mj9{
      box-shadow:0px 0px 0px 0px
  }
  .vid_5p2gvhnus1{
      margin-right:24px;
      font-weight:600;
      color:rgba(56, 117, 255, 1);
      font-size:16px
  }
  .vid_p2bhvel3g3{
      margin-right:24px;
      font-weight:600;
      color:rgba(56, 117, 255, 1);
      font-size:16px
  }
  .vid_8oidj0rciq{
      background-color:#3875FF;
      border-style:solid;
      border-width:1px;
      border-color:#3875FF;
      border-radius:2px
  }
  .vid_8gtw6xzhre{
      padding-left:8px;
      font-weight:600;
      color:rgba(38, 38, 38, 1);
      font-size:16px;
      border-left-style:solid;
      border-left-width:4px;
      border-left-color:#3875FF
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-thead) > tr {
      height: 40px;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-thead) > tr > th {
    background: #3875FF;
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 600;
    color: #FFFFFF;
    border-bottom:1px solid #D9D9D9;
    padding: 8px 16px;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr:not(:last-child) > th {
    border-bottom:1px solid #D9D9D9;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th {
    border-right:1px solid #D9D9D9;
  }
  /* 将表格自带的左边框取消，方便设置表头边框颜色和内容边框颜色 */
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container {
    border-left: none;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-thead > tr > th[colstart='0']:first-child {
    border-left:1px solid #D9D9D9;
  }
  /* 开启粘性表头后，表格结构会发生变化 需另外处理 */
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-header table {
    border-top:1px solid #D9D9D9;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container > .@{ant-prefix}-table-content > table {
    border-top:1px solid #D9D9D9;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-thead) > tr > th:not(:last-child):not(.@{ant-prefix}-table-selection-column):not(.@{ant-prefix}-table-row-expand-icon-cell):not([colspan])::before {
      background: #D9D9D9;
      width: 1px;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-cell-scrollbar) {
      box-shadow: none;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-tbody) tr {
    height: 40px;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-tbody) tr > td {
    font-size: 14px;
    font-family: arial, helvetica, "microsoft yahei";
    font-weight: 400;
    color: #262626;
    border-bottom:1px solid #D9D9D9;
    padding: 0 16px;
    word-break: break-all;
    .cell-wrapper {
      padding: 0 16px;
    }
  }

  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-tbody) tr > td .cell-wrapper {
    padding: 0 16px;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
    padding: 0;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn {
    padding: 0 30px 0 0;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table-tbody) tr > td .@{ant-prefix}-btn:last-child {
    padding: 0;
  }
  .vid_i6ohyx4zer :deep(.table-striped-odd) td {
    background-color: #FFFFFF;
  }
  .vid_i6ohyx4zer :deep(.table-striped-even) td {
    background-color: #F8FAFC;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td {
    border-right:1px solid #D9D9D9;
  }
  .vid_i6ohyx4zer :deep(.@{ant-prefix}-table.@{ant-prefix}-table-bordered) .@{ant-prefix}-table-container .@{ant-prefix}-table-tbody tr > td:first-child {
    border-left:1px solid #D9D9D9;
  }
  .vid_i6ohyx4zer{
      width:100%
  }
  .vid_i6ohyx4zer:active{
      width:100%
  }
  .vid_i6ohyx4zer:focus{
      width:100%
  }
  .vid_i6ohyx4zer:hover{
      width:100%
  }
  .vid_i3kbz0ndi9{
      width:100%;
      margin-top:16px;
      margin-bottom:16px
  }
  .vid_y7ag4g9wyj{
      display:block;
      padding-left:16px
  }
  .vid_jprqbv5xsf{
      display:block;
      padding-top:16px;
      padding-right:16px;
      padding-bottom:16px;
      padding-left:16px;
      border-style:solid;
      border-width:1px;
      border-color:#3875FF;
      border-radius:4px
  }
  .vid_vcz63q8hr2{
      font-weight:600;
      color:rgba(38, 38, 38, 1);
      font-size:16px
  }
  .vid_zivadrxe7d{
      max-height:320px;
      overflow-y:auto;
      margin-top:8px;
      background-color:#F9F9F9;
      border-style:solid;
      border-width:1px;
      border-color:#D9D9D9
  }
  .vid_hmuya3urxt{
      display:block;
      padding-top:16px;
      padding-right:16px;
      padding-bottom:16px;
      padding-left:16px;
      border-style:solid;
      border-width:1px;
      border-color:#3875FF;
      border-radius:4px
  }
  .vid_6cyctwt7j8{
      font-weight:600;
      color:rgba(38, 38, 38, 1);
      font-size:16px
  }
  .vid_42z4ws4a9c{
      max-height:320px;
      overflow-y:auto;
      margin-top:8px;
      background-color:#F9F9F9;
      border-style:solid;
      border-width:1px;
      border-color:#D9D9D9
  }

  .page_root {
    overflow: hidden !important;
  }

  :deep(.@{ant-prefix}-table-empty .@{ant-prefix}-table-tbody tr > td) {
   padding: 0;
  }
</style>